Lots of runs
This commit is contained in:
+924
@@ -0,0 +1,924 @@
|
||||
# Analysebericht — Reverse Requirements Engineering c-entron ERP-Suite
|
||||
|
||||
**Untersuchungsgegenstand:** `C:\DEV\MasterArbeit\QuellCode\CentronERP` — NEXOWARE c-entron ERP (Produktversion `2.0.2611-alpha`, `version.json`)
|
||||
**Umfang der Codebasis:** 26.457 Dateien, 430 MB (gemessen mit `find . -type f | wc -l` bzw. `du -sh .`)
|
||||
**Datenbankschema:** `SSMS_DB_SCHEMA.sql`, 1.535 `CREATE TABLE`-Anweisungen, 134 `FOREIGN KEY`-Klauseln
|
||||
**Analyseart:** rein statisch, ausschließlich lesend. Es wurde keine Datei im Arbeitsverzeichnis verändert und kein System ausgeführt.
|
||||
**Norm:** ISO/IEC/IEEE 29148:2018 (StRS / SyRS / SwRS)
|
||||
|
||||
---
|
||||
|
||||
## 1. Vorgehen
|
||||
|
||||
| Schritt | Inhalt | Status |
|
||||
|---|---|---|
|
||||
| 1 Scope | Vorgegeben: gesamte Codebasis, keine Modulbeschränkung | übernommen |
|
||||
| 0 Modulinventar | Vollständige Inventarisierung **vor** der ersten Anforderung (Abschnitt 2) | durchgeführt |
|
||||
| 0b Mindestabdeckung | Jedes Inventarmodul erhält mindestens eine Anforderung | durchgeführt |
|
||||
| 0c Vertiefung nach Risiko | Sicherheit, Abrechnung/Fakturierung, Berechtigungen | durchgeführt |
|
||||
| 2 Artefakterhebung | Quellcode, Konfiguration, UI-Ressourcen, DB-Schema, Entwicklerdokumentation, CI-Definitionen | durchgeführt |
|
||||
| 3 Technische Analyse | Module, Komponenten, Abhängigkeiten, Statusmaschinen, Validierungen, Rechteprüfungen | durchgeführt |
|
||||
| 4 Semantische Interpretation | Ableitung fachlicher Aussagen (Feld `Aussage`) aus belegten Beobachtungen (Feld `Fakt`) | durchgeführt |
|
||||
| 5 Formalisierung | Blockformat je Anforderung | durchgeführt |
|
||||
| 6 Traceability-Anreicherung | Artefaktbelege je Anforderung, Tracelinks zwischen den Ebenen, `Traceability.md` | durchgeführt |
|
||||
| 7 Validierung | manuell durch Fachexperten | nicht Teil dieses Laufs |
|
||||
|
||||
### 1.1 Wie das Inventar entstanden ist
|
||||
|
||||
Das Modulinventar ist nicht geschätzt, sondern aus drei maschinell auswertbaren Registern abgeleitet:
|
||||
|
||||
1. **`src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`** (954 Zeilen) — der Konstruktor der Klasse `ModuleRegistration` enthält die vollständige Liste der registrierbaren Anwendungsmodule des Windows-Clients, gruppiert in 15 `#region c-entron Module: …`-Blöcken, jeweils mit Rechte- und Lizenzbedingung. Zusätzlich listen `GetSettingsWithoutModule()` und `GetPersonalSettings()` rund 90 Einstellungsseiten.
|
||||
2. **`public string ModuleName =>` / `public string Description =>`** in den `*AppModuleController.cs`-Klassen unter `src/centron/Centron.WPF.UI/Modules/` — liefern den fachlichen Namen und eine Kurzbeschreibung je Modul in der Originalsprache des Produkts.
|
||||
3. **Verzeichnisstruktur der Fachdomänen** in `src/backend/Centron.BL/` (88 Domänenordner), `src/backend/Centron.Entities/Entities/` (88 Domänenordner), `src/nexus/CentronNexus/` (Blazor-Bereiche), `src/webservice/Centron.Controllers/Controllers/` (42 Controller) und `src/apis/` (8 Integrationsassemblies).
|
||||
|
||||
Die Spalte „fachliche Aufgabe" gibt, wo vorhanden, die im Code hinterlegte `Description` wieder; sonst eine aus dem Code abgeleitete Kurzfassung.
|
||||
|
||||
---
|
||||
|
||||
## 2. Schritt 0 — Modulinventar
|
||||
|
||||
154 Module/Komponenten in 15 Bereichen. Das Inventar ist die Bezugsgröße für die Abdeckung in Abschnitt 3.
|
||||
|
||||
### Bereich A — Belegwesen, Vertrieb und CRM
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M01 | Belegwesen (Kundenbelege) | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `src/centron/Centron.WPF.UI/Modules/Finances/Receipts/` | Erfassung, Prüfung, Nummerierung und Speicherung von Angebot, Auftrag, Lieferschein, Rechnung, Gutschrift und Abholschein |
|
||||
| M02 | Adressstamm / CRM | `src/centron/Centron.WPF.UI/Modules/Finances/Crm/CrmAppModuleController.cs` | „Verwaltung von Adressen, CRMs und Belegen" |
|
||||
| M03 | Adressen & Belege (Altmodul) | `src/centron/Centron.WPF.UI/Modules/Finances/AccountManagement/AccountManagementAppModuleController.cs` | „Suche von noch nicht konvertierten Adressen und von Kundenbelegen" |
|
||||
| M04 | CRM-Projekte | `src/centron/Centron.WPF.UI/Modules/Finances/Projects/ProjectsAppModuleController.cs` | „Erstellung und Verwaltung von Projekten" |
|
||||
| M05 | Kampagnen/Mailing | `src/centron/Centron.WPF.UI/Modules/Finances/Campaigns/CampaignAppModuleController.cs` | „Erstellen und Verwalten von Kampagnen" |
|
||||
| M06 | Audit (Kundenaudits) | `src/centron/Centron.WPF.UI/Modules/Survey/SurveyAppModuleController.cs` | „Erstellen und Verwalten von Kundenaudits" |
|
||||
| M07 | Stammblätter | `src/centron/Centron.WPF.UI/Modules/Finances/MasterDataLists/`, `src/backend/Centron.BL/Sales/CustomerAssets/Contracts/ClickContracts/MasterDataListBL.cs` | „Liste aller Stammblätter" — Geräteakten zu Kunden und Verträgen |
|
||||
| M08 | PLM (Product Lifecycle Management) | `src/centron/Centron.WPF.UI/Modules/PLM/PlmAppModuleController.cs`, `src/backend/Centron.BL/Finances/ProductLifecycleBL.cs` | Lebenszyklusverwaltung von Kundenprodukten und Lizenzen |
|
||||
| M09 | Lieferanten-Verträge | `src/centron/Centron.WPF.UI/Modules/Finances/Crm/AccountContracts/` | „Erstellen und Verwalten von Lieferanten-Verträge" |
|
||||
| M10 | Produktmatrix (Kundenmatrix) | `src/backend/Centron.BL/ProductMatrix/ProductMatrixBL.cs` | Zuordnung von Produkten zu Kunden als Vertriebsmatrix |
|
||||
| M11 | Video-Portal | `src/centron/Centron.WPF.UI/Modules/Global/VideoPortal/`, `src/backend/Centron.BL/VideoPortal/` | Bereitstellung und Auswertung von Schulungsvideos je Mitarbeiter |
|
||||
| M12 | Geräteverwaltung (Kundengeräte) | `src/backend/Centron.BL/Devices/AccountDeviceBL.cs`, `src/centron/Centron.WPF.UI/Modules/Finances/Crm/Devices/` | „Bearbeiten von Geräten" — Kundengeräte als eigenständige Objekte |
|
||||
|
||||
### Bereich B — Verträge und Abrechnung
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M13 | Verträge (Belegart Vertrag) | `src/backend/Centron.BL/Sales/Receipts/ContractLists/ReceiptContractBL.cs` | Vertrag als Belegart mit Abrechnungsintervall, Kontingent und Laufzeit |
|
||||
| M14 | Vertragsabrechnung | `src/centron/Centron.WPF.UI/Modules/Finances/AutomatedBilling/`, `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/` | „Abrechnung von Verträgen" — periodische Rechnungserzeugung |
|
||||
| M15 | Pauschalabrechnung | `src/centron/Centron.WPF.UI/Modules/Finances/FlatrateBilling/` | „Verwaltung und Erstellung von Pauschalabrechnungen" |
|
||||
| M16 | Vereinfachte Ticketabrechnung | `src/centron/Centron.WPF.UI/Modules/Finances/TimerBilling/` | „Abrechnung von Tickets und einzelnen Zeiten" |
|
||||
| M17 | Vertragsarten | `src/centron/Centron.WPF.UI/Modules/Finances/Contracts/ContractSettings/ContractTypes/` | Verwaltung der Vertragsarten als Stammdatum |
|
||||
| M18 | Klick-Zählerverwaltung | `src/centron/Centron.WPF.UI/Modules/Finances/DeviceClickCounter/` | „Verwaltung von Klick-Zählern" für nutzungsabhängige Abrechnung |
|
||||
| M19 | Statischer Datenimport – Verträge | `src/centron/Centron.WPF.UI/Modules/Sales/SpecialArticleImport/` | Import von Sonderpreisen als Vertragsgrundlage |
|
||||
| M20 | Dynamischer Datenimport – Verträge | `src/centron/Centron.WPF.UI/Modules/Sales/SpecialArticleToContractImport/` | „Vertragspositionsdaten für Abrechnung importieren" |
|
||||
| M21 | Vertragsauswertung | `src/centron/Centron.WPF.UI/Modules/Finances/ContractEvaluation2/` | „Auswertung von Verträgen" |
|
||||
| M22 | Provisionsauswertung | `src/centron/Centron.WPF.UI/Modules/Finances/Receipts/Provision/Evaluation/` | „Auswertung der Schema-basierten Provisionierung" |
|
||||
| M23 | Provisionsschemas verwalten | `src/centron/Centron.WPF.UI/Modules/Finances/Receipts/Provision/Schemas/` | „Verwaltung von Provisionsschemas" |
|
||||
| M24 | Provisionsschema-Kundenzuordnung | `src/centron/Centron.WPF.UI/Modules/Finances/Receipts/Provision/SchemaCustomerAssignments/` | „Verwaltung welche Provisionsschemas welchen Kunden zugeordnet sind" |
|
||||
| M25 | Leasing/Service | `src/centron/Centron.WPF.UI/Modules/Administration/ServiceAndLeasing/` | Verwaltung von Leasing- und Servicesätzen |
|
||||
| M26 | Aufschläge Stundensätze | `src/centron/Centron.WPF.UI/Modules/Administration/HourlySurchargeRates/` | „Verwalten von Aufschlagssätzen zu Mitarbeiterstunden" |
|
||||
| M27 | Kontingentverwaltung | `src/backend/Centron.BL/Sales/Receipts/Internal/ReceiptContractHelperBL.cs` | Verwaltung von Vertragskontingenten inklusive Rest- und Überbuchung |
|
||||
|
||||
### Bereich C — Finanzen und Buchhaltung
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M28 | Mahnwesen | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs` | „Mahnungen" — Mahnstufenverwaltung offener Rechnungen |
|
||||
| M29 | OPOS | `src/centron/Centron.WPF.UI/Modules/Finances/Opos/` | „OPOS Übersicht" — offene Posten |
|
||||
| M30 | Zahlungseingang | `src/centron/Centron.WPF.UI/Modules/Finances/Payments/`, `src/backend/Centron.BL/Finances/Payments/PaymentsBL.cs` | „Zahlungseingänge verwalten" |
|
||||
| M31 | SEPA-Zahlungsverkehr | `src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs` | „Export von SEPA-Lastschriften" in fünf PAIN-Formaten |
|
||||
| M32 | Buchhaltungsexport/-import | `src/centron/Centron.WPF.UI/Modules/DataExchange/BookKeeping/` | „Export und Import von Buchhaltungsdaten" |
|
||||
| M33 | DATEV Belegtransfer | `src/centron/Centron.WPF.UI/Modules/DataExchange/DatevOnline2020/` | Export für DATEVconnect online |
|
||||
| M34 | Kontenrahmen | `src/centron/Centron.WPF.UI/Modules/Warehousing/AccountSystems/` | „Verwaltung von Buchhaltungskontenrahmen" |
|
||||
| M35 | Mehrwertsteuerverwaltung | `src/centron/Centron.WPF.UI/Modules/Warehousing/ValueAddedTaxAppModuleController.cs`, `src/backend/Centron.BL/Warehousing/TaxBL.cs` | „Verwaltung und Bearbeitung von Mehrwertsteuern" |
|
||||
| M36 | Kostenträger/Kostenstellen | `src/centron/Centron.WPF.UI/Modules/PayersAndCostCenter/` | „Erstellung und Verwaltung von Kostenträger / Kostenstellen" |
|
||||
| M37 | Belegkonditionen | `src/centron/Centron.WPF.UI/Modules/Administration/ReceiptConditions/` | „Verwaltung von Belegkonditionen, Zahlungskonditionen und Lieferbedingungen" |
|
||||
| M38 | Kalkulation pro Filiale | `src/centron/Centron.WPF.UI/Modules/DataExchange/SupplierOrderPerBranch/` | Filialbezogene Auswertung von Einkaufskalkulationen |
|
||||
| M39 | Online-Banking (Kontoauszüge) | `src/centron/Centron.WPF.UI/Modules/OnlineBanking/`, `src/backend/Centron.BL/Finances/OnlineBanking/` | „Listet Transaktionen für Bankkonten auf und erlaubt eine automatisierte oder manuelle Zuweisung von Rechnungen" |
|
||||
| M40 | SEPA-Lastschriftmandate | `src/centron/Centron.WPF.UI/Modules/Administration/SepaContract/` | „Einstellungen für SEPA Lastschrift" — Mandatsverwaltung |
|
||||
|
||||
### Bereich D — Einkauf und Lieferantenprozesse
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M41 | Lieferantenbelegwesen | `src/backend/Centron.BL/Purchasing/`, `src/centron/Centron.WPF.UI/Modules/Purchasing/PurchaseSettings/ReceiptSettings/` | Bestellung, Lieferschein, Eingangsrechnung und Gutschrift gegenüber Lieferanten |
|
||||
| M42 | Belegerfassung (Kosten) | `src/centron/Centron.WPF.UI/Modules/Warehousing/OutcomingPayments/` | „Erfassung von Kosten und Belegen" |
|
||||
| M43 | Bestellvorschlagsliste | `src/centron/Centron.WPF.UI/Modules/Purchasing/OrderSuggestionList/` | Automatisierte Bestellvorschläge auf Basis von Bedarf und Bestand |
|
||||
| M44 | EDI-Verwaltung | `src/centron/Centron.WPF.UI/Modules/Purchasing/EDIManagement/`, `src/backend/Centron.BL/EDI/` | „EDI Orderresponse/Rechnungen Bearbeitung" |
|
||||
| M45 | Eingang/Kalkulation | `src/centron/Centron.WPF.UI/Modules/Finances/Receipts/SupplierReceiptDocuments/` | „Import von Lieferantenbelegen aus E-Mails" |
|
||||
| M46 | TradePool | `src/backend/Centron.BL/TradePool/` | Handelsplattform-Anbindung für Artikel- und Preisdaten |
|
||||
|
||||
### Bereich E — Logistik und Warenwirtschaft
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M47 | Artikelverwaltung | `src/centron/Centron.WPF.UI/Modules/Warehousing/ArticleManagement/`, `src/backend/Centron.BL/Warehousing/ArticleBL.cs` | „Erstellung und Verwaltung von Artikeln" |
|
||||
| M48 | Artikelimport | `src/centron/Centron.WPF.UI/Modules/Warehousing/ArticleImport/` | Import von Artikelstammdaten aus externen Quellen |
|
||||
| M49 | Warengruppenverwaltung | `src/centron/Centron.WPF.UI/Modules/Warehousing/MaterialGroupManagement/`, `src/backend/Centron.BL/Warehousing/InventoryManagement/MaterialGroupBL.cs` | Klassifizierung von Artikeln in Warengruppen |
|
||||
| M50 | Lager- und Bestandsführung | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs` | Bestandsführung je Artikel, Haupt- und Nebenlager |
|
||||
| M51 | Inventur | `src/centron/Centron.WPF.UI/Modules/Warehousing/Inventory/`, `src/backend/Centron.BL/Warehousing/InventoryManagement/` | „Durchführen von Inventuren" |
|
||||
| M52 | Kommissionierung | `src/centron/Centron.WPF.UI/Modules/Warehousing/Commissions/` | „Durch dieses Modul können Aufträge kommissioniert werden" |
|
||||
| M53 | Barcode-/Seriennummernverwaltung | `src/backend/Centron.BL/Sales/Receipts/Internal/ReceiptBarcodeBL.cs`, `src/backend/Centron.BL/Warehousing/BarcodeBL.cs` | Erfassung und Prüfung von Seriennummern und Barcodes auf Belegen |
|
||||
| M54 | Versandabwicklung | `src/apis/Centron.Api.Gls/`, `src/apis/Centron.Api.Shipcloud/` | Erzeugung von Versandaufträgen und Labels bei GLS und Shipcloud |
|
||||
| M55 | Projektpreis-Import | `src/centron/Centron.WPF.UI/Modules/ProjectPriceImport/` | „Projektpreise als Sondervereinbarungen importieren" |
|
||||
| M56 | Aktionspreise | `src/backend/Centron.BL/Warehousing/ActionPriceBL.cs` | Zeitlich befristete Aktionspreise von Distributoren und Herstellern |
|
||||
| M57 | Stücklisten / Teilelisten | `src/backend/Centron.BL/Warehousing/StockManagement/PartListArticleBL.cs` | Verwaltung von Stücklistenartikeln |
|
||||
|
||||
### Bereich F — Service und Helpdesk
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M58 | Ticket-Liste / Helpdesk | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `src/centron/Centron.WPF.UI/Modules/Helpdesk/TicketList/` | „Alle Tickets" — Erfassung und Bearbeitung von Serviceanfragen |
|
||||
| M59 | Ticketzeiterfassung | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs`, `HelpdeskTimeRecordingBL.cs` | Erfassung, Freigabe und Abrechnung von Arbeitszeiten je Ticket |
|
||||
| M60 | Checklisten | `src/centron/Centron.WPF.UI/Modules/Helpdesk/CentronChecklist/`, `src/backend/Centron.BL/CheckListArea/` | „Erstellen und Verwalten von Checklisten" |
|
||||
| M61 | Taskmanagement | `src/centron/Centron.WPF.UI/Modules/Helpdesk/TaskManagement/`, `src/backend/Centron.BL/TaskManager/` | „Erstellen und Verwalten von Tasks" |
|
||||
| M62 | RMA/Werkstatt | `src/centron/Centron.WPF.UI/Modules/Rma/` | „Alles rund um RMA" — Rücksendungs- und Reparaturabwicklung |
|
||||
| M63 | Ticketprozess-Vorlagen | `src/centron/Centron.WPF.UI/Modules/Helpdesk/TicketProcessTemplates/`, `src/backend/Centron.BL/Sales/Support/TicketProcess/` | „In diesem Modul können Vorlagen für Ticketprozesse verwaltet werden" |
|
||||
| M64 | Erwartete Events | `src/centron/Centron.WPF.UI/Modules/Helpdesk/ExpectedEvents/`, `src/backend/Centron.BL/ExpectedEvents/` | Überwachung erwarteter Ereignisse (Ausbleiben löst Meldung aus) |
|
||||
| M65 | Erwartete Events Auswertung | `src/centron/Centron.WPF.UI/Modules/Helpdesk/ExpectedEventsReporting/` | „Auswertung Erwartendener Events" |
|
||||
| M66 | Eskalationen | `src/backend/Centron.BL/Sales/Support/Escalation/EscalationBL.cs` | Automatische Eskalation von Tickets bei Fristüberschreitung |
|
||||
| M67 | QM-Meldungen | `src/centron/Centron.WPF.UI/Modules/QM/` | „Qualitätsmanagemnt Meldungen" |
|
||||
| M68 | Projektverwaltung (intern) | `src/centron/Centron.WPF.UI/Modules/ProjectManagement/` | „Übersicht über die Entwicklungsprojekte. Aktuell nur intern für NEXOWARE Systems GmbH" |
|
||||
| M69 | Ticketprojekte | `src/backend/Centron.BL/TicketProjects/` | Bündelung von Tickets zu Projekten |
|
||||
| M70 | Externer Helpdesk | `src/backend/Centron.BL/ExternalHelpdesk/` | Anbindung fremder Ticketsysteme |
|
||||
| M71 | Reisekosten/Auslagen | `src/centron/Centron.WPF.UI/Modules/Purchasing/TravelExpense/` | „Verwalten und Abrechnen der Mitarbeiterreisekosten" — im Code deaktiviert |
|
||||
|
||||
### Bereich G — Produktion
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M72 | Maschinenverwaltung | `src/centron/Centron.WPF.UI/Modules/Production/MachineManagement/` | „Verwaltung der Maschinen für die Produktion" |
|
||||
| M73 | Produktionsaufträge | `src/centron/Centron.WPF.UI/Modules/Production/ProductionOrder/`, `src/backend/Centron.BL/Production/ProductionOrderBL.cs` | „Erstellung und Verwaltung von Produktionsaufträgen" |
|
||||
| M74 | Artikelproduktion | `src/backend/Centron.BL/Warehousing/ArticleProduction/` | Verbrauch und Erzeugung von Artikeln durch Produktionsschritte |
|
||||
|
||||
### Bereich H — Controlling und Statistik
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M75 | Analytics | `src/centron/Centron.WPF.UI/Modules/Statistics/SaleStatistics/` | „Erstellung, Bearbeitung und Export verschiedenster Auswertungen" |
|
||||
| M76 | Management Info | `src/centron/Centron.WPF.UI/Modules/Statistics/ManagementInfo/` | „Anzeige der aktuellen Firmenkennzahlen" |
|
||||
| M77 | Leistungsnachweise | `src/centron/Centron.WPF.UI/Modules/Statistics/EmployeeAnalytics/` | „Darstellung der Mitarbeiterauslastung" |
|
||||
| M78 | Mitarbeiterauslastung | `src/centron/Centron.WPF.UI/Modules/MyCentron/MyDay/EmployeeOverview/` | „Übersicht über die Arbeitstage von Mitarbeitern und Abteilungen" |
|
||||
| M79 | MSP-Collector | `src/centron/Centron.WPF.UI/Modules/Statistics/MspCollectors/`, `src/backend/Centron.Gateway/MspCollector/` | „Oberfläche für den MSP-Collector" — Einsammeln von Nutzungsdaten |
|
||||
| M80 | MSP-Auswertung | `src/centron/Centron.WPF.UI/Modules/Global/MSPLicensesCompare/` | „Auswertung des MSP-Collector Imports" |
|
||||
| M81 | MSP-Dashboard | `src/centron/Centron.WPF.UI/Modules/Statistics/MspStatistics/` | „Oberfläche für die Auswertung von MSP-Leistungsbausteinen" |
|
||||
| M82 | Telemetrie | `src/backend/Centron.BL/Telemetry/TelemetryBL.cs` | Erhebung von Nutzungs- und Systemkennzahlen |
|
||||
| M83 | Statistikbasis | `src/backend/Centron.BL/Statistics/` | Gemeinsame Auswertungsbausteine für Umsatz und Zeiten |
|
||||
|
||||
### Bereich I — Persönlicher Arbeitsplatz (MyCentron)
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M84 | Dashboard | `src/centron/Centron.WPF.UI/Modules/MyCentron/Dashboard/` | „Übersicht Ticketzeiten und persönliches Dashboard" |
|
||||
| M85 | Mein Tag | `src/centron/Centron.WPF.UI/Modules/MyCentron/MyDay/Editor/`, `src/backend/Centron.BL/MyDay/` | „Zusammenfassung ihres Arbeitstages" |
|
||||
| M86 | Monatsübersicht | `src/centron/Centron.WPF.UI/Modules/MyCentron/MyDay/MonthReview/` | „Übersicht über mehere Arbeitstage und -wochen" |
|
||||
| M87 | Todo-Liste | `src/centron/Centron.WPF.UI/Modules/MyCentron/TodoList/`, `src/backend/Centron.BL/ToDoArea/` | „Aufgabenliste für Tickets, Belege und mehr" |
|
||||
| M88 | Telefonate / TAPI | `src/centron/Centron.WPF.UI/Modules/MyCentron/Telephony/`, `src/backend/Centron.BL/Tapi/PhoneCallBL.cs` | Protokollierung ein- und ausgehender Telefonate |
|
||||
| M89 | Kalender & Termine | `src/backend/Centron.BL/Calendar/CalendarBL.cs`, `src/backend/Centron.BL/Sales/Calendar/ScheduleBL.cs` | Terminverwaltung inklusive Vertretungsregelung und Exchange-Abgleich |
|
||||
| M90 | AI-Chat | `src/centron/Centron.WPF.UI/Modules/ArtificialIntelligence/Chat/`, `src/backend/Centron.BL/ArtificialIntelligence/` | „AI-Chat mit ERP-Toolunterstützung" |
|
||||
| M91 | Persönliche Einstellungen | `src/centron/Centron.WPF.UI/Modules/MyCentron/PersonalSettings/` | Benutzerbezogene Einstellungen (Signatur, Telefonie, Oberfläche, Passwort, Token) |
|
||||
| M92 | Terminanfragen | `src/backend/Centron.BL/AppointmentRequests/` | Anfrage und Bestätigung von Terminen zwischen Beteiligten |
|
||||
|
||||
### Bereich J — Administration und Systemverwaltung
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M93 | Einstellungsverwaltung | `src/centron/Centron.WPF.UI/Modules/Administration/Settings/`, `src/backend/Centron.BL/Administration/Settings/` | „Verwaltung und Überblick über sämtliche c-entron Einstellungen" |
|
||||
| M94 | Mitarbeiterverwaltung | `src/centron/Centron.WPF.UI/Modules/Administration/EmployeeManagement/`, `src/backend/Centron.BL/EmployeeArea/` | „Mitarbeiter Verwaltung" inklusive Benutzerkonten |
|
||||
| M95 | Rechteverwaltung | `src/centron/Centron.WPF.UI/Modules/Administration/RightsManagement/`, `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs` | „Verwaltung von Rechten und Rechtegruppen" |
|
||||
| M96 | Mandantenverwaltung | `src/centron/Centron.WPF.UI/Modules/Administration/MandatorManagement/` | „Mandanten Verwaltung" |
|
||||
| M97 | Filialverwaltung | `src/backend/Centron.Entities/Entities/BranchArea/`, `src/backend/Centron.BL/Sales/…/BranchBL` | Zuordnung von Belegen, Mitarbeitern und Rechten zu Filialen |
|
||||
| M98 | Länderverwaltung | `src/centron/Centron.WPF.UI/Modules/Administration/CountryManagement/` | „Verwaltung von Länderrelevanten Einstellungen" |
|
||||
| M99 | Mailvorlagen | `src/centron/Centron.WPF.UI/Modules/Administration/MailTemplates/`, `src/backend/Centron.BL/Mailings/` | „Alle Mailvorlagen" |
|
||||
| M100 | Textbausteine | `src/centron/Centron.WPF.UI/Modules/Administration/TextBlockManagement/`, `src/backend/Centron.BL/TextModuleArea/` | „Durch dieses Modul können die Textbausteine der c-entron verwaltet werden" |
|
||||
| M101 | Report-Engine | `src/backend/Centron.BL/ReportEngine/`, `src/centron/Centron.WPF.UI/Modules/Reports/ReportManagement/` | „Erstellen, Bearbeiten und Verwalten von Reports" |
|
||||
| M102 | Reportserver | `src/centron/Centron.WPF.UI/Modules/Administration/ReportServer/` | „Automatisiert E-Mails mit Reports an Kunden verschicken" |
|
||||
| M103 | c-entron DSGVO | `src/centron/Centron.WPF.UI/Modules/Administration/DSGVO/`, `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs` | „Modul für die DSGVO" — Löschrecht und Datenbereinigung |
|
||||
| M104 | Auftragsverarbeitungsvertrag | `src/centron/Centron.WPF.UI/Modules/Administration/DSGVO/OrderProcessingContractSettingsAppModuleController.cs` | „Einstellungen für Auftragsverarbeitungs-Vertrag" |
|
||||
| M105 | SQL-Manager | `src/centron/Centron.WPF.UI/Modules/Administration/SqlManagers/`, `src/backend/Centron.BL/Administration/SQLManagement/` | Direkter SQL-Zugriff für Administratoren |
|
||||
| M106 | c-entron Logs | `src/centron/Centron.WPF.UI/Modules/Administration/LogViewer/` | Anzeige der Anwendungsprotokolle |
|
||||
| M107 | c-entron Inspektor | `src/centron/Centron.WPF.UI/Modules/MyCentron/CentronInspectors/` | „Prüft die c-entron und bringt Vorschläge, wie Sie noch mehr aus der c-entron rausholen" |
|
||||
| M108 | Data Updater (Massenupdate) | `src/centron/Centron.WPF.UI/Modules/Massenupdates/`, `src/backend/Centron.BL/MassUpdate/MassUpdateBL.cs` | „Daten verändern/anpassen im großen Stil" |
|
||||
| M109 | API-Zugriffstoken | `src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs` | „Verwalten Sie alle API-Zugriffstoken im System" |
|
||||
| M110 | Lizenzverwaltung | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs` | Prüfung von Lizenzumfang, Anzahl, Gültigkeitsdatum und Version |
|
||||
| M111 | Zusatzfelder (Custom Properties) | `src/centron/Centron.WPF.UI/Modules/Global/CustomProperties/`, `src/backend/Centron.BL/Customizations/` | „Zusatzfelder können selbst bestimmt werden und an verschiedene Objekte angehängt werden" |
|
||||
| M112 | Passwort-Manager (Zugänge) | `src/centron/Centron.WPF.UI/Modules/PasswordManager/AccessManagementAppModuleController.cs`, `src/backend/Centron.BL/PasswordManager/` | „Zugangsverwaltung des Passwort Managers" |
|
||||
| M113 | Passwort-Manager Richtlinien | `src/centron/Centron.WPF.UI/Modules/PasswordManager/GuidelineManagementAppModuleController.cs` | „Verwaltung für die Richlinien des Passwort Manager" |
|
||||
| M114 | Passwort-Manager Zugangsbereiche | `src/centron/Centron.WPF.UI/Modules/PasswordManager/AccessAreaManagementAppModuleController.cs` | „Verwaltung für die Zugangsbereiche des Passwort Managers" |
|
||||
| M115 | Fernzugriff (RDP/SSH) | `src/centron/Centron.WPF.UI/Modules/PasswordManager/RDPEmbeddedAppModuleController.cs`, `SSHEmbeddedAppModuleController.cs` | Eingebettete Remotedesktop- und SSH-Verbindungen |
|
||||
| M116 | Externe Tools | `src/centron/Centron.WPF.UI/Modules/Administration/ExternalTools/`, `src/backend/Centron.BL/ExternalToolsBL/` | Aufruf externer Werkzeuge aus dem Kontext eines Objekts |
|
||||
| M117 | Update-Benachrichtigung | `src/centron/Centron.WPF.UI/Modules/Administration/UpdateAvailableNotificationSettings/` | Benachrichtigung ausgewählter Mitarbeiter über verfügbare Updates |
|
||||
| M118 | Benachrichtigungen | `src/backend/Centron.BL/Notifications/`, `src/backend/Centron.BL/NexusNotifications/` | System- und Benutzerbenachrichtigungen einschließlich Push in das Webportal |
|
||||
| M119 | Volltextsuche (Index-Suche) | `src/backend/Centron.BL/IndexSearch/` | Lucene-basierte Dokument- und Objektsuche mit deutschem Analyzer |
|
||||
| M120 | PDF-Signierung | `src/backend/Centron.BL/Security/PdfSigningBL.cs`, `src/centron/Centron.WPF.UI/Modules/Administration/PdfSigning/` | Digitale Signatur ausgehender PDF-Dokumente |
|
||||
| M121 | Profiling/Performance | `src/backend/Centron.BL/Administration/Profiling/`, `PerformanceTests/` | Laufzeitmessung und Performance-Diagnose |
|
||||
| M122 | Konfigurationsdatenbank | `src/backend/Centron.BL/Administration/CentronConfigDb/` | Getrennte Konfigurationsdatenbank, u. a. Hotline-Masterkey |
|
||||
| M123 | Dokumentenverwaltung | `src/backend/Centron.BL/Administration/Documents/`, `FileManagement/` | Ablage und Bereitstellung von Dokumenten zu Geschäftsobjekten |
|
||||
| M124 | Änderungsverfolgung | `src/backend/Centron.BL/ChangeTracking/` | Protokollierung von Feldänderungen an Geschäftsobjekten |
|
||||
| M125 | Netzwerkdiagnose | `src/backend/Centron.BL/Administration/NetworkDiagnostics/` | Diagnose der Verbindungen zwischen Client, Webservice und Datenbank |
|
||||
|
||||
### Bereich K — Webportal c-entron Nexus
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M126 | Nexus ServiceBoard (Ticketliste/Kanban) | `src/nexus/CentronNexus/ServiceBoard/CachedTicketList/`, `Kanban/` | Webbasierte Ticketliste mit Kanban-Ansicht, Filtern und Bedingungsformatierung |
|
||||
| M127 | Nexus Ticketdetails & Zeiterfassung | `src/nexus/CentronNexus/ServiceBoard/TicketDetails/`, `Timerecords/`, `Stopwatches/` | Ticketbearbeitung und Zeiterfassung im Browser |
|
||||
| M128 | Nexus Kundenportal | `src/nexus/CentronNexus/WebCart/CustomerPortal*`, `src/backend/Centron.BL/WebSuite/` | Kundenzugang zu Tickets, Belegen und Dokumenten |
|
||||
| M129 | Nexus WebCart (Shop) | `src/nexus/CentronNexus/WebCart/WebCartShopPage.razor`, `WebCartCartPage.razor` | Webshop auf Basis der Kundensonderpreise |
|
||||
| M130 | Nexus WebOffer | `src/nexus/CentronNexus/WebOffer/` | Web-Freigabe und Annahme von Angeboten |
|
||||
| M131 | Nexus Dokumentensignatur | `src/nexus/CentronNexus/DocumentSigning/` | Unterschrift von Dokumenten im Browser (Signature Pad) |
|
||||
| M132 | Nexus Office / geteilte Dokumente | `src/nexus/CentronNexus/Office/` | Bereitstellung, Annahme und Signatur geteilter Dokumente |
|
||||
| M133 | Nexus Taskmanagement | `src/nexus/CentronNexus/Management/TaskManagement/` | Aufgabenverwaltung im Webportal |
|
||||
| M134 | Nexus Ticketvorlagen | `src/nexus/CentronNexus/Management/TicketPatterns/` | Pflege von C-FLOW-Ticketvorlagen inklusive Formularen und Skripten |
|
||||
| M135 | Nexus WebAccount-Verwaltung | `src/nexus/CentronNexus/Management/WebAccount/`, `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs` | Anlage und Berechtigung von Kundenzugängen |
|
||||
| M136 | Nexus Produktionsaufträge | `src/nexus/CentronNexus/ProductionOrderManagement/` | Weboberfläche für Produktionsaufträge und Arbeitsschritte |
|
||||
| M137 | Nexus Einstellungen & Branding | `src/nexus/CentronNexus/Settings/`, `docker/compose/appsettings.Production.json` | Mandantenspezifisches Erscheinungsbild und Portaleinstellungen |
|
||||
| M138 | Outlook Add-In | `src/nexus/CentronNexus.OutlookAddIn/` | Zugriff auf Tickets, Kunden, Belege und Dokumente aus Outlook |
|
||||
| M139 | SelfCare-Formulare | `src/backend/Centron.BL/SelfCare/`, `src/webservice/Centron.Controllers/Controllers/v1/SelfCare/` | Kundenformulare mit Zuständen, Auslösern und Aktionen |
|
||||
| M140 | Nexus Ticket-Cache | `src/nexus/CentronNexus/Shared/Services/TicketCacheBackgroundService.cs` | Vorhalten von Ticketdaten für schnelle Listenansichten |
|
||||
|
||||
### Bereich L — Dienste und Schnittstellen
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M141 | Legacy REST-Webservice | `src/webservice/Centron.WebServices.Core/`, `src/backend/Centron.Interfaces/` | Historisch gewachsene REST-Schnittstelle für c-entron.NET und Partneranwendungen |
|
||||
| M142 | Moderne REST-API v1 | `src/webservice/Centron.Controllers/Controllers/v1/` | Versionierte ASP.NET-Core-API (42 Controller) |
|
||||
| M143 | Authentifizierung & Ticketverwaltung | `src/backend/Centron.BL/Administration/Logins/Auth/`, `TicketBL.cs` | Anmeldung über Basis-, Active-Directory-, OpenID-Connect- und WebAccount-Verfahren; Sitzungstickets |
|
||||
| M144 | Zwei-Faktor-Authentifizierung | `src/backend/Centron.BL/Administration/Logins/TwoFactor/` | Zweiter Faktor über RADIUS-Server oder E-Mail-Link |
|
||||
| M145 | Hosts (Konsole/Windows-Dienst) | `src/webservice/Centron.Host/`, `Centron.Host.Console/`, `Centron.Host.WindowsService/` | Betriebsvarianten des Webservice |
|
||||
| M146 | Connection Manager | `src/webservice/c-entron.misc.ConnectionManager/` | Werkzeug zur Konfiguration und zum Test von Verbindungen |
|
||||
| M147 | Hintergrunddienste | `src/backend/Centron.BL/Administration/BackgroundServices/`, `src/webservice/Centron.Host/AspNetCore/HostedServices/`, `docs/Background Service/DataQualityService.md` | Zyklische Wartungs-, Datenqualitäts- und Benachrichtigungsaufgaben |
|
||||
| M148 | Mailversand und MailScanner | `src/backend/Centron.BL/Mail/`, `MailScanner/MailScannerBL.cs` | Versand von Systemmails und Einlesen eingehender Mails in Tickets |
|
||||
| M149 | Chat | `src/backend/Centron.BL/Chats/ChatBL.cs` | Interne Kurznachrichten zwischen Mitarbeitern |
|
||||
| M150 | Mobile-Schnittstelle | `src/backend/Centron.BL/Mobile/MobileBL.cs` | Datenbereitstellung für mobile Anwendungen |
|
||||
|
||||
### Bereich M — Externe Systemanbindungen
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M151 | Artikeldaten-Provider | `src/apis/Centron.APIs.CopDataAccess/`, `EgisDataAccess/`, `ITscopeDataAccess/`, `IcecatDataAccess/` | Externe Artikel-, Preis- und Verfügbarkeitsrecherche |
|
||||
| M152 | finAPI (Online-Banking) | `src/apis/Centron.APIs.FinAPI/` | Abruf von Bankumsätzen |
|
||||
| M153 | ebInterface | `src/apis/Centron.Api.EbInterface/` | Österreichisches E-Rechnungsformat |
|
||||
| M154 | docuFORM | `Centron.Api.docuFORM/`, `src/backend/Centron.BL/DataExchange/DocuForm/` | REST-Anbindung an docuFORM für Gerätedaten |
|
||||
| M155 | RMM-/Fremdsystem-Konnektoren | `src/backend/Centron.BL/DataExchange/Rmm/`, `Connectors/`, `TanssInterfaces/`, `TelekomDive/` | Übernahme von Geräte-, Ticket- und Vertragsdaten aus Fremdsystemen |
|
||||
| M156 | EDI-Gateways | `src/backend/Centron.Gateway/EDI_Also/`, `EDI_Alltron/`, `EDI_Herweck/`, `EDI_Komsa/`, `OpenTrans/` | Lieferantenspezifische EDI-Formate |
|
||||
| M157 | ZUGFeRD/XRechnung | `src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs`, `src/backend/Centron.BL/EDI/Zugferd/` | Erzeugung und Einlesen strukturierter elektronischer Rechnungen |
|
||||
| M158 | GFK-Export | `src/backend/Centron.BL/DataExchange/GfkExport/` | Meldung von Absatzdaten an die GfK |
|
||||
| M159 | DocSync | `src/centron/Centron.WPF.UI/Modules/DataExchange/DocSync/` | Dokumentenabgleich mit externem Speicher (Alpha) |
|
||||
| M160 | Objektreferenzen zu Fremdsystemen | `src/backend/Centron.BL/ObjectExternalReferences/` | Zuordnung interner Objekte zu externen Identifikatoren |
|
||||
|
||||
### Bereich N — Technische Basis
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M161 | Datenmodell | `src/backend/Centron.Entities/` | NHibernate-Entitäten in 88 Domänenordnern |
|
||||
| M162 | Datenzugriff | `src/backend/Centron.DAO/` | FluentNHibernate-Mappings, Repositories, Raw-SQL-Zugriff |
|
||||
| M163 | Datenbank-Skriptmotor | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs`, `ScriptMethods/Scripts/` | Versionierte Schemamigration über 790 nummerierte Skriptklassen |
|
||||
| M164 | Gemeinsame Steuerelemente | `src/shared/Centron.Controls/` | Wiederverwendbare WPF-Steuerelemente und Ansichten |
|
||||
| M165 | Kernbibliothek | `src/shared/Centron.Core/` | Guards, MVVM-Basis, TOTP, Threading, IO |
|
||||
| M166 | Ergebnis- und Fehlerbehandlung | `src/backend/Centron.Interfaces/Results/Result.cs` | Einheitliches `Result`/`Response`-Muster über alle Schichten |
|
||||
| M167 | Lokalisierung | `src/centron/Centron.WPF.UI/Localization/`, `*.resx`, `ResXManager.config.xml` | Deutsch als Basissprache, Englisch als Übersetzung |
|
||||
| M168 | Protokollierung | `nlog.config`, `docker/compose/appsettings.Production.json` | Anwendungsprotokolle in Datei und Konsole |
|
||||
|
||||
### Bereich O — Betrieb und Auslieferung
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M169 | Container-Deployment | `docker/Dockerfile`, `docker/compose/compose.yaml`, `docker/deploy/` | Auslieferung von Webservice und Nexus als Linux-Container |
|
||||
| M170 | Webservice-Konfiguration | `docker/compose/WebServiceConfig.xml` | Zentrale Betriebsparameter des Webservice |
|
||||
| M171 | CI/CD-Pipelines | `azure/build-pipeline.yml`, `tests-pipeline.yml`, `docker-pipeline.yml`, `regression-tests-pipeline.yml` | Bau, Test, Signatur und Veröffentlichung |
|
||||
| M172 | Installer | `deployment/WixSharpInstaller/`, `deployment/centron/`, `deployment/riverbird/` | Windows-Installationspaket des Clients |
|
||||
| M173 | Buildkonfiguration | `Directory.Build.props`, `global.json`, `.editorconfig`, `nuget.config` | Verbindliche Compiler-, Versions- und Codierungsvorgaben |
|
||||
| M174 | Testinfrastruktur | `tests/` (Unit, Integration, EndToEnd, Playwright, Nexus, APIs) | Automatisierte Prüfung auf mehreren Ebenen |
|
||||
|
||||
### Nachtrag zum Inventar (Ergänzung während der Vertiefung)
|
||||
|
||||
Fünf Komponenten wurden erst bei der Vertiefung als eigenständige fachliche Module erkennbar. Das Inventar wird — wie in Schritt 0 vorgesehen — um sie **ergänzt**; gekürzt wurde nichts. Vier davon sind über keine Modulregistrierung erreichbar und daher bei der ersten Sichtung der Modulliste nicht aufgefallen.
|
||||
|
||||
| ID | Bereich | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe | Grund der Nachtragung |
|
||||
|---|---|---|---|---|---|
|
||||
| M175 | J | Gutscheinverwaltung | `src/backend/Centron.BL/VoucherManagement/VoucherManagementBL.cs`, `src/backend/Centron.Entities/Entities/VoucherManagement/` | Ausgabe, Einlösung und Standsführung von Gutscheinen | eigenständige Geschäftslogik ohne Modul- oder Einstellungsanbindung |
|
||||
| M176 | F | IT-Planer (Prüfobjektkategorien) | `src/backend/Centron.BL/ItPlanner/ChecklistVirtualObjectCategoryBL.cs`, `src/backend/Centron.Entities/Entities/ItPlanner/` | Gliederung virtueller Prüfobjekte für Checklisten | eigener Domänenbereich ohne Modulanbindung |
|
||||
| M177 | L | Riverbird-/RiverSuite-Kopplung | `src/backend/Centron.BL/RiverDivo/`, `deployment/riverbird/`, `nugets/RiverbirdPortal.*.nupkg`, `RiverSuiteRelevantRight` | geteilte Bausteine und gesonderte Rechteauswahl für das Schwesterprodukt | über mehrere Verzeichnisse verteilt, keine eigene Modulregistrierung |
|
||||
| M178 | A | DocuBoard / IT-Bestandserfassung | `src/backend/Centron.BL/DocuBoard/`, `src/backend/Centron.Entities/Entities/DocuBoard/`, Tabellen `AssetManagement*` | Erfassung von Kundensystemen, Ordnerberechtigungen, Verzeichnisbenutzern und SNMP-Geräten | drei Geschäftslogikbausteine ohne Modulanbindung |
|
||||
| M179 | N | Anwendungsrahmen und Modulregistrierung | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `ModuleRightsExpressionParser.cs`, `CentronModule.cs`, `CentronApplication.cs`, `FrontWindow.xaml` | Aufbau der Modulliste aus Rechten, Lizenzen und Systemmerkmalen; Öffnen und Schließen von Modulen | querschnittliche Komponente, in der ersten Inventarisierung als Quelle, nicht als Modul geführt |
|
||||
|
||||
**Umfang des Inventars nach der Ergänzung: 179 Module/Komponenten in 15 Bereichen.**
|
||||
|
||||
---
|
||||
|
||||
*Die Abschnitte 3 bis 7 (Abdeckungstabelle, Konsistenzcheck, Risikoliste, Hypothesenabgleich, Selbstbewertung) folgen unten und beziehen sich auf genau dieses Inventar einschließlich des Nachtrags.*
|
||||
|
||||
---
|
||||
|
||||
## 3. Abdeckungstabelle (Schritt 0b und 0c)
|
||||
|
||||
Jede Zeile des Modulinventars aus Abschnitt 2 erscheint hier. Die Einstufung folgt der Zahl der aus dem Modul erzeugten Anforderungen:
|
||||
|
||||
`tief` ≥ 8, `mittel` 3–7, `flach` 1–2, `nicht analysiert` 0.
|
||||
|
||||
|
||||
| Einstufung | Module | Anteil |
|
||||
|---|---|---|
|
||||
| tief | 9 | 5,0 % |
|
||||
| mittel | 108 | 60,3 % |
|
||||
| flach | 62 | 34,6 % |
|
||||
| nicht analysiert | 0 | 0 % |
|
||||
| **Summe** | **179** | **100 %** |
|
||||
|
||||
### 3.1 Abdeckung je Modul
|
||||
|
||||
| ID | Bereich | Modul | Einstufung | Anz. | Anforderungen |
|
||||
|---|---|---|---|---|---|
|
||||
| M01 | A | Belegwesen (Kundenbelege) | tief | 26 | StRS-001, StRS-014, SyRS-001, SyRS-002, SyRS-005, SyRS-006, SyRS-007, SyRS-008, SyRS-009, SyRS-070, SyRS-079, SyRS-190, SyRS-192, SyRS-198, SwRS-001, SwRS-003, SwRS-004, SwRS-005, SwRS-006, SwRS-007, SwRS-008, SwRS-009, SwRS-070, SwRS-071, SwRS-135, SwRS-191 |
|
||||
| M02 | A | Adressstamm / CRM | mittel | 3 | StRS-084, SyRS-173, SwRS-173 |
|
||||
| M03 | A | Adressen & Belege (Altmodul) | flach | 2 | StRS-084, SyRS-173 |
|
||||
| M04 | A | CRM-Projekte | flach | 1 | SyRS-210 |
|
||||
| M05 | A | Kampagnen/Mailing | mittel | 3 | StRS-081, SyRS-170, SwRS-170 |
|
||||
| M06 | A | Audit (Kundenaudits) | mittel | 3 | StRS-049, SyRS-127, SwRS-127 |
|
||||
| M07 | A | Stammblätter | mittel | 3 | StRS-051, SyRS-130, SwRS-130 |
|
||||
| M08 | A | PLM (Product Lifecycle Management) | mittel | 3 | StRS-082, SyRS-171, SwRS-171 |
|
||||
| M09 | A | Lieferanten-Verträge | mittel | 3 | StRS-083, SyRS-172, SwRS-172 |
|
||||
| M10 | A | Produktmatrix (Kundenmatrix) | mittel | 3 | StRS-085, SyRS-174, SwRS-174 |
|
||||
| M11 | A | Video-Portal | mittel | 3 | StRS-058, SyRS-137, SwRS-137 |
|
||||
| M12 | A | Geräteverwaltung (Kundengeräte) | mittel | 3 | StRS-051, StRS-100, SyRS-130 |
|
||||
| M13 | B | Verträge (Belegart Vertrag) | mittel | 5 | StRS-096, StRS-097, SyRS-066, SyRS-212, SwRS-064 |
|
||||
| M14 | B | Vertragsabrechnung | mittel | 7 | StRS-011, SyRS-060, SyRS-061, SyRS-067, SyRS-068, SwRS-060, SwRS-061 |
|
||||
| M15 | B | Pauschalabrechnung | flach | 1 | SyRS-211 |
|
||||
| M16 | B | Vereinfachte Ticketabrechnung | mittel | 3 | StRS-010, SyRS-053, SwRS-051 |
|
||||
| M17 | B | Vertragsarten | flach | 1 | SyRS-212 |
|
||||
| M18 | B | Klick-Zählerverwaltung | mittel | 4 | StRS-013, SyRS-064, SyRS-065, SwRS-063 |
|
||||
| M19 | B | Statischer Datenimport – Verträge | flach | 1 | SyRS-213 |
|
||||
| M20 | B | Dynamischer Datenimport – Verträge | flach | 1 | SyRS-214 |
|
||||
| M21 | B | Vertragsauswertung | flach | 2 | StRS-027, SyRS-090 |
|
||||
| M22 | B | Provisionsauswertung | flach | 1 | SyRS-017 |
|
||||
| M23 | B | Provisionsschemas verwalten | flach | 1 | SyRS-017 |
|
||||
| M24 | B | Provisionsschema-Kundenzuordnung | flach | 1 | SyRS-017 |
|
||||
| M25 | B | Leasing/Service | flach | 1 | SyRS-215 |
|
||||
| M26 | B | Aufschläge Stundensätze | flach | 1 | SyRS-216 |
|
||||
| M27 | B | Kontingentverwaltung | mittel | 4 | StRS-012, SyRS-062, SyRS-063, SwRS-062 |
|
||||
| M28 | C | Mahnwesen | mittel | 3 | StRS-016, SyRS-073, SwRS-072 |
|
||||
| M29 | C | OPOS | flach | 1 | SyRS-217 |
|
||||
| M30 | C | Zahlungseingang | flach | 1 | SyRS-218 |
|
||||
| M31 | C | SEPA-Zahlungsverkehr | mittel | 4 | StRS-017, SyRS-074, SyRS-075, SwRS-073 |
|
||||
| M32 | C | Buchhaltungsexport/-import | mittel | 3 | StRS-019, SyRS-078, SwRS-076 |
|
||||
| M33 | C | DATEV Belegtransfer | flach | 1 | StRS-019 |
|
||||
| M34 | C | Kontenrahmen | mittel | 3 | StRS-088, SyRS-177, SwRS-177 |
|
||||
| M35 | C | Mehrwertsteuerverwaltung | mittel | 4 | StRS-015, SyRS-071, SyRS-072, SwRS-071 |
|
||||
| M36 | C | Kostenträger/Kostenstellen | mittel | 3 | StRS-086, SyRS-175, SwRS-175 |
|
||||
| M37 | C | Belegkonditionen | mittel | 3 | StRS-061, SyRS-140, SwRS-140 |
|
||||
| M38 | C | Kalkulation pro Filiale | flach | 1 | SyRS-219 |
|
||||
| M39 | C | Online-Banking (Kontoauszüge) | mittel | 3 | StRS-062, SyRS-141, SwRS-141 |
|
||||
| M40 | C | SEPA-Lastschriftmandate | flach | 2 | StRS-017, SyRS-075 |
|
||||
| M41 | D | Lieferantenbelegwesen | flach | 1 | SyRS-220 |
|
||||
| M42 | D | Belegerfassung (Kosten) | flach | 1 | SyRS-221 |
|
||||
| M43 | D | Bestellvorschlagsliste | mittel | 3 | StRS-024, SyRS-085, SwRS-084 |
|
||||
| M44 | D | EDI-Verwaltung | mittel | 4 | StRS-025, SyRS-086, SyRS-087, SwRS-085 |
|
||||
| M45 | D | Eingang/Kalkulation | flach | 1 | SyRS-222 |
|
||||
| M46 | D | TradePool | mittel | 3 | StRS-090, SyRS-179, SwRS-179 |
|
||||
| M47 | E | Artikelverwaltung | mittel | 4 | StRS-020, SyRS-080, SyRS-081, SwRS-080 |
|
||||
| M48 | E | Artikelimport | flach | 1 | SyRS-223 |
|
||||
| M49 | E | Warengruppenverwaltung | flach | 1 | SyRS-224 |
|
||||
| M50 | E | Lager- und Bestandsführung | mittel | 4 | SyRS-080, SyRS-081, SyRS-083, SwRS-080 |
|
||||
| M51 | E | Inventur | mittel | 3 | StRS-023, SyRS-084, SwRS-083 |
|
||||
| M52 | E | Kommissionierung | mittel | 3 | StRS-022, SyRS-083, SwRS-082 |
|
||||
| M53 | E | Barcode-/Seriennummernverwaltung | mittel | 3 | StRS-021, SyRS-082, SwRS-081 |
|
||||
| M54 | E | Versandabwicklung | flach | 2 | SyRS-089, SwRS-087 |
|
||||
| M55 | E | Projektpreis-Import | flach | 1 | SyRS-225 |
|
||||
| M56 | E | Aktionspreise | flach | 1 | SyRS-226 |
|
||||
| M57 | E | Stücklisten / Teilelisten | flach | 1 | SyRS-227 |
|
||||
| M58 | F | Ticket-Liste / Helpdesk | tief | 10 | StRS-004, StRS-009, SyRS-012, SyRS-050, SyRS-051, SyRS-052, SyRS-054, SyRS-055, SwRS-050, SwRS-052 |
|
||||
| M59 | F | Ticketzeiterfassung | mittel | 4 | StRS-010, SyRS-053, SyRS-216, SwRS-051 |
|
||||
| M60 | F | Checklisten | mittel | 3 | StRS-053, SyRS-132, SwRS-132 |
|
||||
| M61 | F | Taskmanagement | mittel | 3 | StRS-055, SyRS-134, SwRS-134 |
|
||||
| M62 | F | RMA/Werkstatt | mittel | 3 | StRS-026, SyRS-088, SwRS-086 |
|
||||
| M63 | F | Ticketprozess-Vorlagen | mittel | 3 | StRS-054, SyRS-133, SwRS-133 |
|
||||
| M64 | F | Erwartete Events | mittel | 3 | StRS-050, SyRS-128, SwRS-128 |
|
||||
| M65 | F | Erwartete Events Auswertung | flach | 2 | SyRS-128, SwRS-128 |
|
||||
| M66 | F | Eskalationen | mittel | 3 | StRS-052, SyRS-131, SwRS-131 |
|
||||
| M67 | F | QM-Meldungen | mittel | 3 | StRS-056, SyRS-135, SwRS-135 |
|
||||
| M68 | F | Projektverwaltung (intern) | mittel | 3 | StRS-059, SyRS-138, SwRS-138 |
|
||||
| M69 | F | Ticketprojekte | flach | 1 | SyRS-228 |
|
||||
| M70 | F | Externer Helpdesk | mittel | 3 | SyRS-129, SwRS-129, SwRS-200 |
|
||||
| M71 | F | Reisekosten/Auslagen | mittel | 3 | StRS-060, SyRS-139, SwRS-139 |
|
||||
| M72 | G | Maschinenverwaltung | flach | 2 | StRS-057, SyRS-136 |
|
||||
| M73 | G | Produktionsaufträge | mittel | 3 | StRS-057, SyRS-136, SwRS-136 |
|
||||
| M74 | G | Artikelproduktion | flach | 1 | StRS-057 |
|
||||
| M75 | H | Analytics | mittel | 3 | StRS-027, SyRS-090, SwRS-090 |
|
||||
| M76 | H | Management Info | flach | 2 | StRS-027, SyRS-090 |
|
||||
| M77 | H | Leistungsnachweise | flach | 1 | SyRS-229 |
|
||||
| M78 | H | Mitarbeiterauslastung | mittel | 4 | StRS-029, SyRS-092, SyRS-229, SwRS-092 |
|
||||
| M79 | H | MSP-Collector | mittel | 3 | StRS-028, SyRS-091, SwRS-091 |
|
||||
| M80 | H | MSP-Auswertung | flach | 2 | StRS-028, SyRS-091 |
|
||||
| M81 | H | MSP-Dashboard | flach | 2 | StRS-028, SyRS-091 |
|
||||
| M82 | H | Telemetrie | flach | 2 | SyRS-093, SwRS-093 |
|
||||
| M83 | H | Statistikbasis | flach | 2 | SyRS-094, SwRS-090 |
|
||||
| M84 | I | Dashboard | flach | 1 | SyRS-230 |
|
||||
| M85 | I | Mein Tag | mittel | 3 | StRS-029, SyRS-092, SwRS-092 |
|
||||
| M86 | I | Monatsübersicht | flach | 1 | SyRS-231 |
|
||||
| M87 | I | Todo-Liste | flach | 2 | SyRS-134, SwRS-134 |
|
||||
| M88 | I | Telefonate / TAPI | mittel | 3 | StRS-047, SyRS-125, SwRS-125 |
|
||||
| M89 | I | Kalender & Termine | mittel | 6 | StRS-045, StRS-046, SyRS-123, SyRS-124, SwRS-123, SwRS-124 |
|
||||
| M90 | I | AI-Chat | mittel | 3 | StRS-048, SyRS-126, SwRS-126 |
|
||||
| M91 | I | Persönliche Einstellungen | flach | 2 | SyRS-019, SyRS-125 |
|
||||
| M92 | I | Terminanfragen | flach | 1 | SyRS-232 |
|
||||
| M93 | J | Einstellungsverwaltung | mittel | 4 | SyRS-018, SyRS-019, SwRS-020, SwRS-184 |
|
||||
| M94 | J | Mitarbeiterverwaltung | mittel | 5 | StRS-006, StRS-098, SyRS-030, SyRS-031, SwRS-030 |
|
||||
| M95 | J | Rechteverwaltung | tief | 12 | StRS-003, StRS-004, SyRS-010, SyRS-011, SyRS-012, SyRS-013, SyRS-014, SyRS-015, SyRS-200, SwRS-010, SwRS-011, SwRS-012 |
|
||||
| M96 | J | Mandantenverwaltung | mittel | 7 | StRS-002, SyRS-003, SyRS-004, SyRS-190, SyRS-199, SwRS-002, SwRS-191 |
|
||||
| M97 | J | Filialverwaltung | mittel | 4 | StRS-002, SyRS-003, SyRS-012, SyRS-219 |
|
||||
| M98 | J | Länderverwaltung | mittel | 3 | StRS-087, SyRS-176, SwRS-176 |
|
||||
| M99 | J | Mailvorlagen | mittel | 3 | StRS-036, SyRS-114, SwRS-114 |
|
||||
| M100 | J | Textbausteine | mittel | 3 | StRS-036, SyRS-114, SwRS-114 |
|
||||
| M101 | J | Report-Engine | mittel | 3 | StRS-032, SyRS-110, SwRS-110 |
|
||||
| M102 | J | Reportserver | mittel | 3 | StRS-033, SyRS-111, SwRS-111 |
|
||||
| M103 | J | c-entron DSGVO | mittel | 5 | StRS-030, SyRS-100, SyRS-101, SyRS-195, SwRS-100 |
|
||||
| M104 | J | Auftragsverarbeitungsvertrag | flach | 1 | StRS-030 |
|
||||
| M105 | J | SQL-Manager | mittel | 3 | StRS-077, SyRS-158, SwRS-158 |
|
||||
| M106 | J | c-entron Logs | mittel | 3 | StRS-078, SyRS-159, SwRS-159 |
|
||||
| M107 | J | c-entron Inspektor | flach | 2 | StRS-077, SyRS-022 |
|
||||
| M108 | J | Data Updater (Massenupdate) | mittel | 3 | StRS-034, SyRS-112, SwRS-112 |
|
||||
| M109 | J | API-Zugriffstoken | mittel | 4 | StRS-076, SyRS-156, SyRS-157, SwRS-157 |
|
||||
| M110 | J | Lizenzverwaltung | tief | 10 | StRS-005, StRS-074, StRS-075, SyRS-020, SyRS-021, SyRS-138, SyRS-155, SwRS-020, SwRS-021, SwRS-156 |
|
||||
| M111 | J | Zusatzfelder (Custom Properties) | mittel | 3 | StRS-035, SyRS-113, SwRS-113 |
|
||||
| M112 | J | Passwort-Manager (Zugänge) | mittel | 5 | StRS-031, SyRS-102, SyRS-148, SwRS-101, SwRS-148 |
|
||||
| M113 | J | Passwort-Manager Richtlinien | flach | 1 | SyRS-233 |
|
||||
| M114 | J | Passwort-Manager Zugangsbereiche | flach | 1 | SyRS-234 |
|
||||
| M115 | J | Fernzugriff (RDP/SSH) | mittel | 3 | StRS-069, SyRS-148, SwRS-148 |
|
||||
| M116 | J | Externe Tools | mittel | 3 | StRS-068, SyRS-147, SwRS-147 |
|
||||
| M117 | J | Update-Benachrichtigung | flach | 1 | SyRS-235 |
|
||||
| M118 | J | Benachrichtigungen | mittel | 3 | StRS-066, SyRS-145, SwRS-145 |
|
||||
| M119 | J | Volltextsuche (Index-Suche) | mittel | 3 | StRS-037, SyRS-115, SwRS-115 |
|
||||
| M120 | J | PDF-Signierung | mittel | 4 | StRS-038, SyRS-116, SwRS-116, SwRS-117 |
|
||||
| M121 | J | Profiling/Performance | flach | 2 | StRS-079, SyRS-196 |
|
||||
| M122 | J | Konfigurationsdatenbank | flach | 2 | SyRS-102, SwRS-101 |
|
||||
| M123 | J | Dokumentenverwaltung | mittel | 3 | StRS-037, SyRS-115, SyRS-117 |
|
||||
| M124 | J | Änderungsverfolgung | mittel | 5 | StRS-080, SyRS-161, SyRS-191, SwRS-161, SwRS-162 |
|
||||
| M125 | J | Netzwerkdiagnose | mittel | 3 | StRS-079, SyRS-160, SwRS-160 |
|
||||
| M126 | K | Nexus ServiceBoard (Ticketliste/Kanban) | mittel | 4 | SyRS-041, SyRS-054, SwRS-041, SwRS-053 |
|
||||
| M127 | K | Nexus Ticketdetails & Zeiterfassung | flach | 1 | SyRS-236 |
|
||||
| M128 | K | Nexus Kundenportal | tief | 9 | StRS-008, SyRS-040, SyRS-041, SyRS-042, SyRS-043, SyRS-118, SwRS-040, SwRS-041, SwRS-042 |
|
||||
| M129 | K | Nexus WebCart (Shop) | mittel | 3 | StRS-040, SyRS-118, SwRS-118 |
|
||||
| M130 | K | Nexus WebOffer | mittel | 3 | StRS-041, SyRS-119, SwRS-119 |
|
||||
| M131 | K | Nexus Dokumentensignatur | mittel | 3 | StRS-039, SyRS-117, SwRS-117 |
|
||||
| M132 | K | Nexus Office / geteilte Dokumente | flach | 2 | SyRS-117, SwRS-117 |
|
||||
| M133 | K | Nexus Taskmanagement | flach | 2 | SyRS-134, SwRS-134 |
|
||||
| M134 | K | Nexus Ticketvorlagen | flach | 2 | SyRS-133, SwRS-133 |
|
||||
| M135 | K | Nexus WebAccount-Verwaltung | mittel | 3 | SyRS-014, SyRS-042, SwRS-040 |
|
||||
| M136 | K | Nexus Produktionsaufträge | flach | 2 | SyRS-136, SwRS-136 |
|
||||
| M137 | K | Nexus Einstellungen & Branding | mittel | 5 | StRS-092, SyRS-181, SyRS-198, SwRS-118, SwRS-181 |
|
||||
| M138 | K | Outlook Add-In | mittel | 3 | StRS-043, SyRS-121, SwRS-121 |
|
||||
| M139 | K | SelfCare-Formulare | mittel | 3 | StRS-042, SyRS-120, SwRS-120 |
|
||||
| M140 | K | Nexus Ticket-Cache | flach | 2 | SyRS-196, SwRS-053 |
|
||||
| M141 | L | Legacy REST-Webservice | mittel | 4 | StRS-071, SyRS-030, SyRS-151, SwRS-151 |
|
||||
| M142 | L | Moderne REST-API v1 | mittel | 4 | SyRS-143, SyRS-157, SwRS-143, SwRS-157 |
|
||||
| M143 | L | Authentifizierung & Ticketverwaltung | tief | 14 | StRS-006, SyRS-030, SyRS-034, SyRS-035, SyRS-036, SyRS-037, SyRS-038, SyRS-039, SyRS-178, SwRS-030, SwRS-032, SwRS-033, SwRS-034, SwRS-178 |
|
||||
| M144 | L | Zwei-Faktor-Authentifizierung | mittel | 4 | StRS-007, SyRS-032, SyRS-033, SwRS-031 |
|
||||
| M145 | L | Hosts (Konsole/Windows-Dienst) | mittel | 4 | StRS-071, StRS-072, SyRS-152, SwRS-152 |
|
||||
| M146 | L | Connection Manager | flach | 1 | SyRS-237 |
|
||||
| M147 | L | Hintergrunddienste | mittel | 3 | SyRS-160, SwRS-053, SwRS-160 |
|
||||
| M148 | L | Mailversand und MailScanner | mittel | 4 | StRS-044, SyRS-122, SwRS-035, SwRS-122 |
|
||||
| M149 | L | Chat | mittel | 3 | StRS-067, SyRS-146, SwRS-146 |
|
||||
| M150 | L | Mobile-Schnittstelle | mittel | 3 | StRS-089, SyRS-178, SwRS-178 |
|
||||
| M151 | M | Artikeldaten-Provider (COP/EGIS/ITscope/Icecat) | mittel | 3 | StRS-063, SyRS-142, SwRS-142 |
|
||||
| M152 | M | finAPI (Online-Banking) | mittel | 3 | StRS-062, SyRS-141, SwRS-141 |
|
||||
| M153 | M | ebInterface | flach | 1 | SwRS-075 |
|
||||
| M154 | M | docuFORM | flach | 2 | SyRS-143, SyRS-204 |
|
||||
| M155 | M | RMM-/Fremdsystem-Konnektoren | mittel | 3 | StRS-064, SyRS-143, SwRS-143 |
|
||||
| M156 | M | EDI-Gateways | mittel | 4 | StRS-025, SyRS-086, SyRS-202, SwRS-085 |
|
||||
| M157 | M | ZUGFeRD/XRechnung | mittel | 5 | StRS-018, SyRS-076, SyRS-077, SwRS-074, SwRS-075 |
|
||||
| M158 | M | GFK-Export | mittel | 3 | StRS-065, SyRS-144, SwRS-144 |
|
||||
| M159 | M | DocSync | mittel | 3 | StRS-095, SyRS-184, SwRS-184 |
|
||||
| M160 | M | Objektreferenzen zu Fremdsystemen | mittel | 3 | StRS-091, SyRS-180, SwRS-180 |
|
||||
| M161 | N | Datenmodell (Centron.Entities) | mittel | 6 | SyRS-161, SyRS-205, SwRS-014, SwRS-015, SwRS-161, SwRS-190 |
|
||||
| M162 | N | Datenzugriff (Centron.DAO) | tief | 8 | SwRS-007, SwRS-008, SwRS-009, SwRS-014, SwRS-018, SwRS-019, SwRS-022, SwRS-197 |
|
||||
| M163 | N | Datenbank-Skriptmotor | tief | 8 | StRS-073, SyRS-153, SyRS-154, SwRS-153, SwRS-154, SwRS-155, SwRS-196, SwRS-199 |
|
||||
| M164 | N | Gemeinsame Steuerelemente | mittel | 4 | SyRS-198, SwRS-017, SwRS-164, SwRS-198 |
|
||||
| M165 | N | Kernbibliothek (Centron.Core) | mittel | 3 | SwRS-023, SwRS-165, SwRS-197 |
|
||||
| M166 | N | Ergebnis- und Fehlerbehandlung | flach | 2 | SwRS-016, SwRS-135 |
|
||||
| M167 | N | Lokalisierung | mittel | 4 | StRS-070, SyRS-150, SwRS-036, SwRS-150 |
|
||||
| M168 | N | Protokollierung | mittel | 4 | StRS-078, SyRS-159, SwRS-093, SwRS-159 |
|
||||
| M169 | O | Container-Deployment | mittel | 4 | StRS-072, SyRS-152, SyRS-197, SwRS-152 |
|
||||
| M170 | O | Webservice-Konfiguration | mittel | 5 | SyRS-181, SyRS-193, SyRS-194, SyRS-237, SwRS-181 |
|
||||
| M171 | O | CI/CD-Pipelines | mittel | 5 | StRS-094, SyRS-182, SyRS-183, SwRS-182, SwRS-183 |
|
||||
| M172 | O | Installer | mittel | 3 | StRS-093, SyRS-182, SwRS-182 |
|
||||
| M173 | O | Buildkonfiguration | mittel | 6 | SyRS-183, SwRS-036, SwRS-183, SwRS-192, SwRS-194, SwRS-195 |
|
||||
| M174 | O | Testinfrastruktur | mittel | 3 | SyRS-183, SwRS-163, SwRS-193 |
|
||||
| M175 | J | Gutscheinverwaltung | flach | 1 | StRS-099 |
|
||||
| M176 | F | IT-Planer (Prüfobjektkategorien) | flach | 1 | SyRS-203 |
|
||||
| M177 | L | Riverbird-/RiverSuite-Kopplung | flach | 1 | SyRS-201 |
|
||||
| M178 | A | DocuBoard / IT-Bestandserfassung | flach | 1 | StRS-100 |
|
||||
| M179 | N | Anwendungsrahmen und Modulregistrierung | tief | 10 | StRS-071, SyRS-016, SyRS-017, SyRS-018, SyRS-019, SyRS-022, SyRS-023, SyRS-151, SwRS-013, SwRS-020 |
|
||||
|
||||
### 3.2 Anforderungen ohne Modulzuordnung
|
||||
|
||||
Von 434 Anforderungen sind 434 in der Abdeckungstabelle einem Modul zugeordnet; 0 beschreiben modulübergreifende Sachverhalte (Architektur, Betrieb, Querschnitt) und sind bewusst keinem einzelnen Inventarmodul zugewiesen.
|
||||
|
||||
---
|
||||
|
||||
## 4. Konsistenzcheck über das gesamte Anforderungs-Set
|
||||
|
||||
Der Check wurde maschinell über alle drei Spezifikationsdateien geführt (Zerlegung in Anforderungsblöcke, Auswertung der Pflichtfelder, Auflösung aller Tracelinks gegen die Menge vergebener IDs).
|
||||
|
||||
| Prüfung | Ergebnis |
|
||||
|---|---|
|
||||
| Anforderungen gesamt | 434 (StRS 100, SyRS 190, SwRS 144) |
|
||||
| Doppelte oder mehrfach vergebene IDs | 0 |
|
||||
| Anforderungen ohne Beleg | 0 |
|
||||
| Anforderungen ohne `PRIMÄR`-Beleg | 0 |
|
||||
| Anforderungen ohne Angabe zur `Übernahmewürdigkeit` | 0 |
|
||||
| Anforderungen ohne Prüfidee | 0 |
|
||||
| Anforderungen ohne Tracelink | 0 |
|
||||
| Tracelinks auf nicht existierende IDs | 0 |
|
||||
| Anforderungen mit unzulässigem `Status` (weder `belegt` noch `HYPOTHESE`) | 0 |
|
||||
| Nicht-funktionale Anforderungen ohne `Qualitätsmerkmal` | 0 (von 48) |
|
||||
| SwRS-Anforderungen ohne Verweis auf eine SyRS-Anforderung | 0 |
|
||||
| SyRS-Anforderungen ohne Verweis auf eine StRS-Anforderung | 0 |
|
||||
| Inhaltlich deckungsgleiche Anforderungen ohne Konsolidierungsvermerk | 0 — siehe Abschnitt 4.1 |
|
||||
|
||||
Die beiden Traceability-Zeilen betreffen die Vorgabe „Jede SwRS-Anforderung referenziert die zugehörige SyRS-Anforderung; jede SyRS-Anforderung referenziert die zugehörige StRS-Anforderung". Bei der ersten Auswertung fehlte dieser Aufwärtsverweis bei 7 SyRS- und 13 SwRS-Anforderungen — durchgängig querschnittlichen technischen Anforderungen (Datenzugriffsmuster, Kodierungsvorgabe, Ergebnisobjekt, Eingangsprüfungen). Die Verweise wurden ergänzt; die Tabelle oben gibt den Endstand wieder.
|
||||
|
||||
### 4.1 Deckungsgleiche Anforderungen
|
||||
|
||||
Geprüft wurde, ob zwei Anforderungen denselben Sachverhalt beschreiben, ohne dass dies vermerkt ist. Anforderungen, die denselben Gegenstand aus Sicht verschiedener Ebenen beschreiben, sind ausdrücklich **kein** Konsolidierungsfall — sie sind über die Tracelinks verbunden (siehe `Traceability.md`).
|
||||
|
||||
Als Konsolidierungskandidat vermerkt sind 86 Anforderungen (19,8 %). Sie benennen jeweils eine fachlich gleichartige Funktion in getrennten Implementierungen oder Datenhaltungen. Die gewichtigsten Fälle sind in Abschnitt 7.4 zusammengefasst.
|
||||
|
||||
---
|
||||
|
||||
## 5. Liste aller risikorelevanten Anforderungen
|
||||
|
||||
Risikorelevant sind gemäß Vorgabe Anforderungen zu **Sicherheitsregeln, Abrechnungs- und Fakturierungslogik sowie Berechtigungen**. Die Auswahl erfolgte maschinell über den Anforderungstyp `Sicherheit` sowie über Schlüsselbegriffe in Titel, Aussage und Akteur (Abrechnung, Fakturierung, Rechnung, Provision, Preis, Kontingent, Zähler, Zahlung, SEPA, Mahnung, OPOS, Steuer, Gutschrift, Kredit, Recht, Berechtigung, Lizenz, Kennwort, Anmeldung, Authentifizierung, Token, Verschlüsselung, Signatur, DSGVO, Mandant, Zugang, Zwei-Faktor).
|
||||
|
||||
**Ergebnis: 210 risikorelevante Anforderungen. Davon ohne `PRIMÄR`-Beleg und ohne `[HYPOTHESE]`-Kennzeichnung: 0.**
|
||||
|
||||
Damit liegt kein Verstoß gegen die risikobasierte Priorisierung vor: Jede risikorelevante Anforderung führt entweder mindestens einen `PRIMÄR`-Beleg mit Angabe der durchsetzenden Stelle oder ist als `[HYPOTHESE]` gekennzeichnet.
|
||||
|
||||
| ID | Titel | PRIMÄR-Beleg vorhanden | Status | Durchsetzende Stelle (erster PRIMÄR-Beleg) |
|
||||
|---|---|---|---|---|
|
||||
| StRS-001 | Durchgängige Belegkette vom Angebot bis zur Rechnung | ja | belegt | `src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptBase.cs` |
|
||||
| StRS-002 | Mehrmandantenfähigkeit mit Filialgliederung | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateReceiptNumber` (Zeilen 7264-7285) |
|
||||
| StRS-003 | Rollenbasierte Zugriffssteuerung über Rechtegruppen | ja | belegt | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, `GetAllAppRightsFromUser` (Zeilen 651-666) |
|
||||
| StRS-004 | Einschränkende Rechte begrenzen die Sicht auf eigene Vorgänge oder die eigene Filiale | ja | belegt | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `GetShowHelpdeskRight` (Zeilen 268-289) |
|
||||
| StRS-005 | Funktionsumfang wird durch erworbene Lizenzen bestimmt | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `DoRegisterCentronModules` (Zeilen 379-393) |
|
||||
| StRS-006 | Anmeldung erfordert ein aktives Mitarbeiter- und Benutzerkonto | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, `ValidateAppUser` (Zeilen 157-218) |
|
||||
| StRS-007 | Zweiter Anmeldefaktor für Benutzer und Kundenzugänge | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, Zeilen 62-70 |
|
||||
| StRS-008 | Kunden erhalten einen eigenen Selbstbedienungszugang | ja | belegt | `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs`, `LoginWithWebAccount` (Zeilen 54-94) |
|
||||
| StRS-009 | Serviceanfragen werden als Tickets mit Zuständigkeit und Fälligkeit geführt | ja | belegt | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `CheckUserRigths` (Zeilen 418-465) |
|
||||
| StRS-010 | Erfasste Arbeitszeiten sind Grundlage der Leistungsabrechnung | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/Internal/ReceiptItemTimerBL.cs` (2.111 Zeilen) |
|
||||
| StRS-011 | Wiederkehrende Leistungen werden über Verträge automatisiert abgerechnet | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, `StoreBookedContingent` (Zeilen 1099-1116) |
|
||||
| StRS-012 | Vertragskontingente begrenzen und verrechnen erbrachte Leistungen | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 1046-1051 |
|
||||
| StRS-013 | Nutzungsabhängige Abrechnung über Gerätezählerstände | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, `GetCounterFreeCount` (Zeile 736) und `GetCounterScalePrices` (Zeile 750) |
|
||||
| StRS-014 | Kreditlimit des Kunden begrenzt das offene Belegvolumen | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CheckIfCustomerLimitIsReached` (Zeilen 8636-8683) |
|
||||
| StRS-015 | Umsatzsteuer wird belegabhängig und länderabhängig ausgewiesen | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CheckIfAllArticlePositionsHaveVatRate` (Zeilen 9573-9585) |
|
||||
| StRS-016 | Offene Forderungen werden gestuft angemahnt | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs`, Zeilen 207-230 |
|
||||
| StRS-017 | Lastschrifteinzug über SEPA-Dateien | ja | belegt | `src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs`, `GetInterfaceList` (Zeilen 56-66) |
|
||||
| StRS-018 | Elektronische Rechnungsstellung nach ZUGFeRD und XRechnung | ja | belegt | `src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs`, Zeile 951 |
|
||||
| StRS-020 | Artikelstamm als gemeinsame Grundlage von Verkauf, Einkauf und Lager | ja | belegt | `src/backend/Centron.BL/Warehousing/ArticleBL.cs` |
|
||||
| StRS-025 | Elektronischer Datenaustausch mit Distributoren | ja | belegt | `src/backend/Centron.BL/EDI/SupplierEDI/` mit den lieferantenspezifischen Partialklassen |
|
||||
| StRS-027 | Kennzahlen für die Unternehmenssteuerung | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 212-249 (Region „Controlling/Analytics") |
|
||||
| StRS-028 | Nutzungsdaten aus Managed-Service-Systemen fließen in Auswertung und Abrechnung | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 232-244 |
|
||||
| StRS-029 | Mitarbeiter dokumentieren ihren Arbeitstag | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 361-363 (ohne Rechteprüfung) und 227-229 (`Helper.HasAnyRight(UserRightsConst.RIGHT_FREMDAUSLASTUNG)`) |
|
||||
| StRS-030 | Betroffenenrechte nach DSGVO werden im System unterstützt | ja | belegt | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, `DsgvoDeleteRightDeleteContacts` (ab Zeile 787) und `DsgvoDeleteRightGetContacts` (ab Zeile 377) |
|
||||
| StRS-031 | Zugangsdaten von Kunden werden verschlüsselt verwahrt | ja | belegt | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeile 700 |
|
||||
| StRS-034 | Massenänderungen an Stammdaten sind kontrolliert möglich | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 424-426 |
|
||||
| StRS-038 | Ausgehende PDF-Dokumente können digital signiert werden | ja | belegt | `src/backend/Centron.BL/Security/PdfSigningBL.cs` |
|
||||
| StRS-040 | Kunden bestellen über einen Webshop zu ihren Sonderpreisen | ja | belegt | `src/backend/Centron.BL/Administration/Logins/WebRightsVisibility.cs`, Einträge 62001/62002 und Kategorie 6500 |
|
||||
| StRS-048 | KI-gestützte Unterstützung im ERP-Kontext | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 376-378 |
|
||||
| StRS-051 | Kundengeräte werden als Stammblatt und als Gerät doppelt geführt | ja | belegt | `src/backend/Centron.Entities/Entities/Sales/Receipts/MasterDataLists/MasterDataList.cs`, Zeilen 9-28 |
|
||||
| StRS-054 | Ticketvorlagen steuern wiederkehrende Serviceprozesse | ja | belegt | `src/nexus/CentronNexus/Management/TicketPatterns/Components/` mit `TicketPatternChecklistsTab.razor`, `TicketPatternFormsTab.razor`, `TicketPatternMailTemplateTab.razor`, `TicketPatternScriptsTab.razor` |
|
||||
| StRS-056 | Qualitätsrelevante Vorfälle werden als QM-Meldung erfasst | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CheckIfAssetReasonIsNeeded` (Zeilen 8823-8857) |
|
||||
| StRS-057 | Produktionsaufträge steuern die Eigenfertigung | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 405-412 |
|
||||
| StRS-060 | Reisekostenabrechnung ist vorbereitet, aber nicht freigegeben | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 904-906 |
|
||||
| StRS-061 | Kunden- und Lieferantenkonditionen steuern Preise und Zahlungsziele | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateConditionTextsAndCheckMinPrices` (Zeilen 8883-8960) |
|
||||
| StRS-062 | Bankumsätze werden Rechnungen automatisch zugeordnet | ja | belegt | `src/apis/Centron.APIs.FinAPI/FinApiClient.cs` und `src/backend/Centron.BL/Finances/OnlineBanking/` |
|
||||
| StRS-063 | Externe Artikeldaten ergänzen den eigenen Artikelstamm | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ArticleSearch/ITscopeExternalArticleSearchProvider.cs`, Zeile 210 (`VatRate = taxRate.TaxRate`) und `CopApiBaseExternalArticleSearchProvider.cs`, Zeile 147 |
|
||||
| StRS-064 | Gerätedaten aus Fremdsystemen fließen in Vertrag und Abrechnung | ja | belegt | `src/webservice/Centron.Controllers/Controllers/v1/Integrations/RmmController.cs` und `.../DataExchange/DocBeeTicketTimersController.cs` |
|
||||
| StRS-069 | Fernzugriff auf Kundensysteme aus der Anwendung | ja | belegt | `src/centron/Centron.WPF.UI/Modules/PasswordManager/RDPEmbeddedAppModuleController.cs` und `SSHEmbeddedAppModuleController.cs` |
|
||||
| StRS-074 | Lizenzprüfung schützt vor Schemaänderungen ohne gültige Lizenz | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, `LoadLicenses` (Zeilen 219-236) |
|
||||
| StRS-075 | Gleichzeitige Nutzung wird durch die Lizenzanzahl begrenzt | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 276-284 |
|
||||
| StRS-076 | Programmatischer Zugriff über persönliche und systemweite API-Token | ja | belegt | `src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs`, `GenerateSecureToken` (Zeilen 457-474) und `HashToken` (Zeilen 478-487) |
|
||||
| StRS-077 | Administrative Direktzugriffe auf die Datenbank sind gesondert berechtigt | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 323-325 |
|
||||
| StRS-079 | Systemzustand und Verbindungen sind diagnostizierbar | ja | belegt | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, `GetAllTickets` (Zeilen 183-202) |
|
||||
| StRS-080 | Änderungen an Geschäftsobjekten sind nachvollziehbar | ja | belegt | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 186, 205, 226, 245, 368 |
|
||||
| StRS-082 | Lebenszyklus von Kundenprodukten und Lizenzen wird überwacht | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 136-138 |
|
||||
| StRS-086 | Kostenstellen und Kostenträger für die interne Verrechnung | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 3723-3724 |
|
||||
| StRS-087 | Länderabhängige Steuersätze, Währungen und Formate | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateCurrencyFactor` (Zeilen 8359-8370) |
|
||||
| StRS-089 | Mobile Nutzung über eine eigene Schnittstelle | ja | belegt | `src/backend/Centron.BL/Mobile/MobileBL.cs` |
|
||||
| StRS-090 | Handelsplattform-Anbindung für Artikel- und Preisdaten | ja | belegt | `src/backend/Centron.BL/TradePool/TradePoolBL.cs` |
|
||||
| StRS-092 | Erscheinungsbild des Kundenportals ist mandantenspezifisch anpassbar | ja | belegt | `docker/compose/appsettings.Production.json`, Abschnitt `Branding` |
|
||||
| StRS-098 | [HYPOTHESE] Kennwörter müssen nach einer festgelegten Frist gewechselt werden | ja | HYPOTHESE | `src/backend/Centron.BL/Administration/Logins/UsersBL.cs`, Zeilen 123-129 |
|
||||
| StRS-100 | [HYPOTHESE] Kunden-IT-Bestände werden über ein Asset Management erfasst | ja | HYPOTHESE | `src/backend/Centron.BL/DocuBoard/AssetManagementPartnerBL.cs`, `AssetManagementArticleAssignmentBL.cs`, `AssetManagementADSystemUserExclusionBL.cs` |
|
||||
| SyRS-006 | Zahlungskondition kann einen neuen Beleg unmittelbar abschließen | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateReceiptStateFromPaymentCondition` (Zeilen 8336-8357) |
|
||||
| SyRS-010 | Rechteermittlung erfolgt zwischengespeichert je Benutzer | ja | belegt | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, `HasUserRight` (Zeilen 644-650) |
|
||||
| SyRS-011 | Rechteänderungen werden protokolliert | ja | belegt | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 186, 205, 226, 245, 368, 401 |
|
||||
| SyRS-012 | Rechteverwaltung kann auf die eigene Filiale beschränkt werden | ja | belegt | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, `SaveRightGroup` (Zeilen 391-393) |
|
||||
| SyRS-013 | Die Administratorengruppe ist gegen Löschung geschützt | ja | belegt | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 359-360 |
|
||||
| SyRS-014 | Rechte für Kundenzugänge stammen aus einer abschließenden Positivliste | ja | belegt | `src/backend/Centron.BL/Administration/Logins/WebRightsVisibility.cs`, Zeilen 10-38 und 51-58 |
|
||||
| SyRS-015 | Rechteprüfung wirkt in Geschäftslogik und Oberfläche getrennt | ja | belegt | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `CheckUserRigths` (Zeilen 418-465) |
|
||||
| SyRS-016 | Modulrechte werden aus einem Ausdrucksbaum ausgewertet | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 502-532 |
|
||||
| SyRS-017 | Ein Modul kann durch ein Recht auch ausgeschlossen werden | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 430-438 |
|
||||
| SyRS-018 | Einstellungsseiten ohne Lizenz werden aus der Liste entfernt | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 397-404 |
|
||||
| SyRS-019 | Persönliche Einstellungen werden rechte- und lizenzabhängig zusammengestellt | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `GetPersonalSettings` (Zeilen 233-263) |
|
||||
| SyRS-020 | Lizenzprüfung berücksichtigt Zusatz- und Kundenanmeldelizenzen | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 263-301 |
|
||||
| SyRS-021 | Versionsnummern der Vorgängergeneration werden bei der Lizenzprüfung ersetzt | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, `TryFixCentronDelphiVersionNumber` (Zeilen 304-330) |
|
||||
| SyRS-022 | Modulfreigabe kennt drei Sonderfälle über Systemmerkmale | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 371-373 |
|
||||
| SyRS-023 | Fehler bei der Modulregistrierung brechen die Anmeldung nicht ab | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, `RegisterModules` (Zeilen 200-212) |
|
||||
| SyRS-030 | Anmeldeverfahren werden über eine Fabrik ausgewählt | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 94-155 |
|
||||
| SyRS-031 | Kennwörter werden als ungesalzener SHA-1-Hash gespeichert | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, Zeilen 46-50 |
|
||||
| SyRS-032 | Zweiter Faktor kann über RADIUS oder E-Mail-Bestätigung erbracht werden | ja | belegt | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeilen 183-193 |
|
||||
| SyRS-033 | Der zweite Faktor gilt tageweise je Anwendung, Gerät und IP-Adresse | ja | belegt | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, `HasToValidateTwoFactor` (Zeilen 82-135) |
|
||||
| SyRS-034 | Anmeldung über Active Directory | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/ActiveDirectoryAuthenticator.cs` |
|
||||
| SyRS-035 | Anmeldung über OpenID Connect mit Kontoverknüpfung | ja | belegt | `src/webservice/Centron.Controllers/Controllers/Unversioned/JwtAuthController.cs`, `ConnectAccounts` (Zeilen 82-105) |
|
||||
| SyRS-036 | Sitzungstickets laufen anwendungsabhängig ab | ja | belegt | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, `GetExpireDate` (Zeilen 136-164) |
|
||||
| SyRS-037 | Ein Sitzungsticket wird je Benutzer, Anwendung und Gerät wiederverwendet | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 124-129 |
|
||||
| SyRS-038 | Anmeldezeitpunkt, Gerät und IP-Adresse werden festgehalten | ja | belegt | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, `SetLoginIP` (Zeilen 49-59) |
|
||||
| SyRS-039 | Fehlgeschlagene Anmeldungen werden protokolliert, sperren das Konto aber nicht | ja | HYPOTHESE | `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, Zeile 55 |
|
||||
| SyRS-040 | Kundenzugänge werden über einen technischen Sammelbenutzer abgebildet | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/WebAccountAuthenticator.cs`, Zeilen 37-40 |
|
||||
| SyRS-041 | Kundendaten werden im Portal serverseitig auf den eigenen Kunden eingegrenzt | ja | belegt | `src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs`, Zeilen 32-62 |
|
||||
| SyRS-042 | Kundenzugänge kennen eine Administratorrolle | ja | belegt | `src/backend/Centron.BL/Administration/Logins/WebRightsVisibility.cs`, Zeile 16 (`31005, // Ist Kundenadministrator`) und Zeilen 20-27 |
|
||||
| SyRS-043 | Kundenportal und internes Portal können über getrennte Ports betrieben werden | ja | belegt | `src/nexus/CentronNexus/Shared/Authorization/PortAuthorization.cs` |
|
||||
| SyRS-050 | Ticketrechte werden bei jedem Speichern geprüft | ja | belegt | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, `CheckRights` (Zeilen 410-416) |
|
||||
| SyRS-052 | Ticketzuweisung kann auf die eigenen Abteilungen beschränkt werden | ja | belegt | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, Zeilen 454-463 |
|
||||
| SyRS-053 | Ticketzeiten mit Artikelbezug bilden die Abrechnungsgrundlage | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 3691 (`this.UpdateArticlePositionsHelpdeskTimerI3Ds(receipt);`) |
|
||||
| SyRS-054 | Tickets können als ausschließlich intern sichtbar gekennzeichnet werden | ja | belegt | `src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs`, Zeilen 42-56 |
|
||||
| SyRS-060 | Abrechenbare Verträge werden über einen mehrstufigen Filter ermittelt | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, `GetActiveContracts` (Zeilen 820-846) |
|
||||
| SyRS-061 | Ein Abrechnungslauf kann mehrere Perioden in Teilrechnungen zerlegen | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 1052-1090 |
|
||||
| SyRS-062 | Kontingente werden je Rechnung mit Art, Wert und Buchungszeitraum festgeschrieben | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, `StoreBookedContingent` (Zeilen 1098-1135) |
|
||||
| SyRS-063 | Kontingentausgleich wirkt sich auf Belegpositionen aus | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 3781-3791 |
|
||||
| SyRS-064 | Zählerstände werden mit Historie, Freimengen und Staffelpreisen verrechnet | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 487-560 und 736-764 |
|
||||
| SyRS-065 | Zählerstände können aus einem Import in Stammblätter überführt werden | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 62-161 |
|
||||
| SyRS-066 | Verträge kennen automatische Verlängerung und Kündigungsdatum | ja | belegt | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| SyRS-067 | Aus einem Vertrag erzeugte Rechnungen bleiben rückverfolgbar | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, `StoreInvoiceToContract` (Zeile 1258) und `GetLastInvoiceID` (Zeile 811) |
|
||||
| SyRS-068 | Mehrere Verträge eines Kunden können in einer Sammelrechnung abgerechnet werden | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, `GetContractMailTemplate` (Zeile 263) |
|
||||
| SyRS-070 | Kreditlimit wird belegartübergreifend berechnet | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8661-8672 |
|
||||
| SyRS-071 | Steuersätze werden bei einer Datumsänderung des Belegs nachgeführt | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 7897 |
|
||||
| SyRS-072 | Umsatzsteuer-Identifikationsnummer oder Steuernummer wird geprüft | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 3749 (`this.CheckIfRevenueIdentificationNumberOrTaxNumber(receipt, result);`) |
|
||||
| SyRS-073 | Mahnstufen werden je Rechnung geführt und können gefiltert werden | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs`, Zeilen 286-297 |
|
||||
| SyRS-074 | SEPA-Export verwendet wahlweise die Bankverbindung des Mandanten | ja | belegt | `src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs`, Zeilen 136-169 |
|
||||
| SyRS-075 | Lastschriftmandate sind bei entsprechender Zahlungskondition Pflicht | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 3745 (`this.CheckIfMandatIsNeeded(receipt, data, result); //Abhängig: Zahlungskondition, Mandat`) |
|
||||
| SyRS-076 | Elektronische Rechnung wird aus einer eigenen Exportstruktur erzeugt | ja | belegt | `src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs` |
|
||||
| SyRS-077 | Elektronische Rechnungen werden auch eingelesen | ja | belegt | `src/backend/Centron.BL/EDI/Zugferd/ZugferdParseBL.cs`, Zeile 128 |
|
||||
| SyRS-078 | Buchhaltungsdaten werden über eine eigene Beleg-Ladestruktur bereitgestellt | ja | belegt | `src/backend/Centron.BL/WebServices/DataExchange/BookKeeping/BookKeepingExportWebServiceBL.cs`, Zeilen 561-563 |
|
||||
| SyRS-079 | Ohne Preisrecht bleiben Einkaufs- und Verkaufspreis unverändert | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateArticlePositionsPurchasePriceAndSellPriceIfUserDoesNotHaveRightToChangeThem` (Zeilen 8030-8098) |
|
||||
| SyRS-081 | Lagerbuchungen aktualisieren den Einkaufspreis des Artikels | ja | belegt | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs`, Zeilen 74-149 |
|
||||
| SyRS-092 | Arbeitszeiten werden aus mehreren Quellen zusammengeführt | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, `GetLicenseCount(Guid licenseGuid)` (Zeilen 332-343) |
|
||||
| SyRS-100 | Datenbereinigung nach DSGVO erfolgt kategorienweise und vorschaufähig | ja | belegt | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, Zeilen 34-63 |
|
||||
| SyRS-101 | Das Löschbegehren wird über eine Kontaktrecherche vorbereitet | ja | belegt | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, `DsgvoDeleteRightGetContacts` (Zeilen 377-786) |
|
||||
| SyRS-102 | Schlüsselmaterial liegt in einer getrennten Konfigurationsdatenbank | ja | belegt | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 551-553 |
|
||||
| SyRS-111 | Berichtsversand des Reportservers ist an ein eigenes Recht gebunden | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 160-162 |
|
||||
| SyRS-112 | Massenänderungen sind an ein eigenes Recht und eine eigene Lizenz gebunden | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 424-426 |
|
||||
| SyRS-113 | Zusatzfelder werden typisiert gespeichert | ja | belegt | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 1051-1052 |
|
||||
| SyRS-116 | PDF-Signierung ist zentral konfigurierbar | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Eintrag `new PdfSigningSettingsAppModuleController()` in `GetSettingsWithoutModule()` |
|
||||
| SyRS-117 | Die Unterschrift im Browser läuft in einer abgeschotteten Komponente | ja | belegt | `src/nexus/CentronNexus/DocumentSigning/IsolatedSignaturePad.razor` |
|
||||
| SyRS-128 | Erwartete Ereignisse und ihre Auswertung sind getrennt lizenziert | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 150-157 |
|
||||
| SyRS-130 | Stammblätter verbinden Gerät, Vertrag und Rechnung | ja | belegt | `src/backend/Centron.Entities/Entities/Sales/Receipts/MasterDataLists/MasterDataList.cs`, Zeilen 9-33 |
|
||||
| SyRS-135 | Begründungspflicht wird über eine dreistufige Einstellung und ein Pflichtkennzeichen gesteuert | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CheckIfAssetReasonIsNeeded` (Zeilen 8823-8857) |
|
||||
| SyRS-138 | Herstellerinterne Funktionen werden über eine eigene Lizenz freigeschaltet | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 380-383 |
|
||||
| SyRS-140 | Konditionstexte werden beim Speichern in den Beleg übernommen | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8883-8960 |
|
||||
| SyRS-141 | Bankumsätze werden über ein eigenes Gateway abgerufen | ja | belegt | `src/apis/Centron.APIs.FinAPI/IFinApiClient.cs` |
|
||||
| SyRS-142 | Externe Artikelquellen werden über ein gemeinsames Anbietermuster eingebunden | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ArticleSearch/ITscopeExternalArticleSearchProvider.cs`, Zeile 210 und `EgisExternalArticleSearchProvider.cs`, Zeile 272 |
|
||||
| SyRS-145 | Benachrichtigungen werden über einen gesicherten Kanal in das Portal übertragen | ja | belegt | `docker/compose/appsettings.Production.json`, `Notifications.SecretKey` und `docker/compose/WebServiceConfig.xml`, `<SecretKey>` |
|
||||
| SyRS-148 | Fernzugriffsmodule sind an den Passwort-Manager gekoppelt | ja | belegt | `src/centron/Centron.WPF.UI/Modules/PasswordManager/RDPEmbeddedAppModuleController.cs` und `SSHEmbeddedAppModuleController.cs` |
|
||||
| SyRS-155 | Lizenzen können nach Anzahl, Datum und Version begrenzt sein | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 274-284 |
|
||||
| SyRS-156 | API-Token werden mit Ablaufdatum und Aktivkennzeichen geführt | ja | belegt | `src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs`, Zeile 444 |
|
||||
| SyRS-157 | API-Aufrufe mit Token werden über das JWT-Bearer-Verfahren autorisiert | ja | belegt | `src/webservice/Centron.Controllers/Controllers/v1/Administration/AccessTokensController.cs`, Zeile 19 |
|
||||
| SyRS-158 | Der SQL-Manager stellt Datenbankinformationen auch für die Lizenzierung bereit | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 70-87 |
|
||||
| SyRS-171 | Der Produktlebenszyklus wird eigenständig ausgewertet | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 136-138 |
|
||||
| SyRS-173 | Die Umschaltung zwischen Adressmodellen erfolgt über eine einzige Einstellung | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 105-111 und 132-133 |
|
||||
| SyRS-174 | Die Produktmatrix ist als eigenes Steuerelement wiederverwendbar | ja | belegt | `src/shared/Centron.Controls/ProductMatrix/` |
|
||||
| SyRS-177 | Erlöskonten werden je Belegposition ermittelt | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 8872 |
|
||||
| SyRS-178 | Mobile Anwendungen melden sich als eigene Anwendungsart an | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 100-104 |
|
||||
| SyRS-184 | Funktionen im Erprobungsstadium werden in der Oberfläche gekennzeichnet | ja | belegt | `src/centron/Centron.WPF.UI/Modules/DataExchange/DocSync/DocSyncSettingsAppModuleController.cs`, Zeile 12 |
|
||||
| SyRS-193 | [HYPOTHESE] Die Datenbankverbindung wird verschlüsselt hinterlegt | ja | HYPOTHESE | `src/backend/Centron.BL/Administration/WebServiceConfiguration/WebServiceConfigSerializer.cs`, Zeilen 41-44 und 163 |
|
||||
| SyRS-194 | [HYPOTHESE] Die Verbindung zum Webservice ist transportverschlüsselt | ja | HYPOTHESE | `src/nexus/CentronNexus.Host/Program.cs`, Zeile 145 |
|
||||
| SyRS-195 | [HYPOTHESE] Für personenbezogene Daten bestehen Aufbewahrungsfristen | ja | HYPOTHESE | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, Zeilen 34-63 |
|
||||
| SyRS-199 | [HYPOTHESE] Mandantendaten sind auf Datenebene voneinander getrennt | ja | HYPOTHESE | `SSMS_DB_SCHEMA.sql`, `dbo.Sichbenu`, Spalte `[MandantID] [int] NULL` (Zeile 18515) |
|
||||
| SyRS-200 | [HYPOTHESE] Rechteänderungen wirken ohne neue Anmeldung | ja | HYPOTHESE | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 644-650 |
|
||||
| SyRS-201 | [HYPOTHESE] Das Riverbird-Produkt teilt sich Bestandteile mit c-entron | ja | HYPOTHESE | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, `GetRiversuiteRelevantRights` (Zeilen 55-60) |
|
||||
| SyRS-204 | [HYPOTHESE] Die docuFORM-Anbindung liefert Gerätezählerstände | ja | HYPOTHESE | `Centron.Api.docuFORM/IDocuFormApiClient.cs` und `DocuFormRestApiClient.cs` |
|
||||
| SyRS-211 | Pauschalabrechnung arbeitet ausschließlich über die Datenbankverbindung | ja | belegt | `src/centron/Centron.WPF.UI/Modules/Finances/FlatrateBilling/FlatRateProjectAppModuleController.cs`, Zeile 19 |
|
||||
| SyRS-212 | Vertragsarten steuern die Vorbelegung neuer Verträge | ja | belegt | `src/backend/Centron.Entities/Entities/Accounts/AccountContracts/AccountContract.cs`, Zeile 124 |
|
||||
| SyRS-213 | Sonderpreise werden als Grundlage der Vertragsabrechnung importiert | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 473-475 |
|
||||
| SyRS-214 | Vertragspositionsdaten werden für die Abrechnung importiert | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 463-465 |
|
||||
| SyRS-216 | Aufschläge auf Stundensätze werden zentral verwaltet | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 36-38 |
|
||||
| SyRS-218 | Zahlungseingänge werden erfasst und Rechnungen zugeordnet | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs`, Zeile 221 (`f.GrossPriceComplete - f.PayedGrossAmount - f.CreditVoucherGrossAmount`) |
|
||||
| SyRS-220 | Lieferantenbelege bilden eine eigene Belegkette | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 7318-7330 |
|
||||
| SyRS-225 | Projektpreise werden als Sondervereinbarungen importiert | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 3699 (`this.CheckIfArticlesWithLicenseeRequiredHaveASpecialAgreementI3D(receipt, data, result); //Nebenwirkung: SpecialAgreementI3D`) |
|
||||
| SyRS-226 | Aktionspreise gelten befristet und je Distributor | ja | belegt | `src/backend/Centron.BL/Warehousing/ActionPriceBL.cs` |
|
||||
| SyRS-227 | Stücklistenartikel werden aus Komponenten zusammengesetzt | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 8046 |
|
||||
| SyRS-230 | Das persönliche Dashboard fasst offene Vorgänge zusammen | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 356-358 |
|
||||
| SyRS-233 | Kennwortrichtlinien des Zugangsverwalters sind gesondert berechtigt | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 386-393 |
|
||||
| SyRS-234 | Zugangsbereiche gliedern die verwahrten Zugangsdaten | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 396-398 |
|
||||
| SyRS-237 | Verbindungen werden über ein eigenes Werkzeug eingerichtet und geprüft | ja | belegt | `src/webservice/c-entron.misc.ConnectionManager/ConnectionManagerViewModel.cs`, Zeilen 919-924 |
|
||||
| SwRS-002 | Nummernkreise werden als Mandanten- und Filialstammdatum geführt | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 7264-7285 |
|
||||
| SwRS-010 | Rechteabfragen verwenden benannte Parameter und Rohsql | ja | belegt | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 95-111 |
|
||||
| SwRS-011 | Rechtegruppen tragen eine Filialkennung | ja | belegt | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 42-46, 355-357, 391-393, 444-446 |
|
||||
| SwRS-012 | Rechtekennungen werden ausschließlich über Konstanten verwendet | ja | belegt | `src/webservice/Centron.WebServices.Core/EntitiesWrongPlace/Administration/Rights/UserRightsConst.cs`, Zeilen 1960 und 1976 |
|
||||
| SwRS-020 | Lizenz- und Rechtebedingung sind je Modul getrennte Ausdrücke | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 497-527 |
|
||||
| SwRS-021 | Der Lizenzmanager wird je Betriebsart unterschiedlich eingerichtet | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 47-173 |
|
||||
| SwRS-030 | Anmeldeverfahren erben Rechte-, Lizenz- und Ticketlogik aus einer Basisklasse | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 51-66 und 94-155 |
|
||||
| SwRS-031 | Der Prüfer des zweiten Faktors wird als statisches Feld zwischengespeichert | ja | belegt | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeilen 181-194 |
|
||||
| SwRS-032 | Die Anwendungskennung wird verschlüsselt übertragen und entschlüsselt aufgelöst | ja | belegt | `src/webservice/Centron.Controllers/Controllers/Unversioned/JwtAuthController.cs`, Zeilen 25-39 |
|
||||
| SwRS-033 | Ticketkennungen werden aus Gerätekennung und Zufallssalz gebildet | ja | belegt | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, Zeilen 166-170 |
|
||||
| SwRS-034 | Anmeldeversuche werden mit strukturiertem Kontext protokolliert | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 21-42 |
|
||||
| SwRS-035 | Der Mailversand ist in Entwicklungsständen gegen Fremdadressen abgesichert | ja | belegt | `DeveloperSecurity.cs` (Ablage laut `docs/reference/security/developer-security.md`) |
|
||||
| SwRS-041 | Pflichtfilter werden als Filterbaum aufgebaut und zusammengeführt | ja | belegt | `src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs`, Zeilen 65-105 |
|
||||
| SwRS-042 | Portalseiten werden über Autorisierungsattribute geschützt | ja | belegt | `src/nexus/CentronNexus/Shared/Authorization/` mit den zwölf genannten Bausteinen |
|
||||
| SwRS-050 | Ticketrechteprüfung erkennt Feldänderungen über den Persistenzzustand | ja | belegt | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, Zeile 455 (`IsDirtyProperty`) |
|
||||
| SwRS-060 | Die Vertragsabrechnung ist als partielle Klasse getrennt | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeile 60 (`public partial class AutomaticFacturaBL`) |
|
||||
| SwRS-061 | Zeiträume der Vertragsabrechnung werden kalendarisch berechnet | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 1072-1086 |
|
||||
| SwRS-062 | Kontingentzuordnungen werden als eigene Entität geführt | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 1066-1101 |
|
||||
| SwRS-063 | Zählerdaten werden über Barcode und Gerätekennung verknüpft | ja | belegt | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 492, 522, 532, 765 |
|
||||
| SwRS-064 | Vertragsfelder umfassen Kontingent-, Abrechnungs- und Überwachungsparameter | ja | belegt | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| SwRS-070 | Preisrechte werden belegartspezifisch ausgewertet | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8038-8039 |
|
||||
| SwRS-071 | Steuerprüfungen unterscheiden Artikel- und Rabattpositionen von übrigen Positionsarten | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9575-9578 |
|
||||
| SwRS-072 | Der offene Rechnungsbetrag wird aus drei Bestandteilen gebildet | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs`, Zeilen 221, 224, 227, 230 |
|
||||
| SwRS-073 | SEPA-Formate werden über eine Aufzählung und ein Gateway getrennt | ja | belegt | `src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs`, Zeilen 179-184 |
|
||||
| SwRS-074 | Die ZUGFeRD-Erzeugung arbeitet über ein eigenes Exportobjekt | ja | belegt | `src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs`, Zeilen 833-838 |
|
||||
| SwRS-075 | Elektronische Rechnungsformate liegen in drei getrennten Bausteinen | ja | belegt | `src/backend/Centron.Gateway/ZUGFeRD21_Extended/` und `src/apis/Centron.Api.EbInterface/EbInterfaceLogic.cs` |
|
||||
| SwRS-086 | RMA-Vorgänge werden über eigene Logikkomponenten geführt | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 292-294 |
|
||||
| SwRS-100 | Die Datenbereinigung ist nach Kategorien aufgeteilt | ja | belegt | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, Zeilen 34-63 und 64-376 |
|
||||
| SwRS-101 | Verschlüsselte Werte werden in einer eigenen Spalte geführt | ja | belegt | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 527, 700 und 1052 |
|
||||
| SwRS-116 | Die PDF-Signierung ist die einzige Komponente im Sicherheitsbereich der Geschäftslogik | ja | belegt | `src/backend/Centron.BL/Security/PdfSigningBL.cs` als einziger Inhalt des Verzeichnisses |
|
||||
| SwRS-117 | Unterschriften werden je Bezugsobjekt getrennt verwaltet | ja | belegt | `SSMS_DB_SCHEMA.sql`, `dbo.Sichbenu`, Spalte `[Unterschrift] [image] NULL` (Zeile 18528) |
|
||||
| SwRS-128 | Erwartete Ereignisse sind in Steuerung und Auswertung getrennt | ja | belegt | Die beiden getrennten Modulzweige `ExpectedEvents/` und `ExpectedEventsReporting/` |
|
||||
| SwRS-130 | Stammblätter bestehen in zwei Entitätsausprägungen | ja | belegt | `src/backend/Centron.Entities/Entities/Sales/CustomerAssets/Contracts/ClickContracts/MasterDataListCompact.cs` und `MasterDataListItemsCompact.cs` |
|
||||
| SwRS-133 | Ticketvorlagen werden über eine Baumstruktur mit Kategorien geordnet | ja | belegt | `src/nexus/CentronNexus/Management/TicketPatterns/Components/TicketPatternTree.razor` und `TicketPatternCategoryEditor.razor` |
|
||||
| SwRS-134 | Aufgabenverwaltung besteht in zwei Domänenbereichen | ja | belegt | `src/backend/Centron.BL/TaskManager/` und `src/backend/Centron.BL/ToDoArea/` |
|
||||
| SwRS-138 | Systemmerkmale werden zentral vor der Modulauswahl gesetzt | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 371-378 |
|
||||
| SwRS-140 | Konditionstexte werden über eine gemeinsame Bildungsfunktion erzeugt | ja | belegt | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8912, 8940 und im Zahlungskonditionsblock |
|
||||
| SwRS-148 | Der Passwort-Manager ist im Quellcode als abzulösen gekennzeichnet | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeile 383 |
|
||||
| SwRS-151 | Zu jeder Logikschnittstelle bestehen zwei Umsetzungen | ja | belegt | `src/centron/Centron.WPF.UI/Services/Logics/TwoFactorAuthenticator/` mit allen drei Dateien |
|
||||
| SwRS-152 | Der Container wird eigenständig veröffentlicht | ja | belegt | `docker/Dockerfile`, Zeilen 1-11 und 32-34 |
|
||||
| SwRS-154 | Skripte können vor der Anmeldung und wiederkehrend ausgeführt werden | ja | belegt | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs`, Zeilen 82-98 |
|
||||
| SwRS-156 | Lizenzanzahl und Ticketanzahl werden gemeinsam ausgewertet | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 276-284 |
|
||||
| SwRS-157 | Rechteprüfungen der Tokenverwaltung liegen in der Geschäftslogik | ja | belegt | `src/webservice/Centron.Controllers/Controllers/v1/Administration/AccessTokensController.cs`, Zeilen 11-16 und 30-38 |
|
||||
| SwRS-158 | Datenbankkennungen werden über eine eigene Verwaltungskomponente ermittelt | ja | belegt | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 72-73 |
|
||||
| SwRS-159 | Protokollierung erfolgt über klassenbezogene Protokollierer | ja | belegt | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeile 19 und `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeile 54 |
|
||||
| SwRS-172 | Lieferantenverträge verwenden eigene Steuerelemente und Logikklassen | ja | belegt | `src/shared/Centron.Controls/AccountContracts/` |
|
||||
| SwRS-174 | Die Produktmatrix besteht aus Logik, Entitäten und Steuerelement | ja | belegt | Die drei genannten Bereiche |
|
||||
| SwRS-178 | Anwendungsarten tragen Rechte-, Lizenz- und Sitzungsmerkmale | ja | belegt | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 70-84 und 100-106 |
|
||||
| SwRS-182 | Der Bau wird über ein eigenes Skriptprojekt gesteuert | ja | belegt | `azure/build-pipeline.yml`, Zeilen 18-38 |
|
||||
| SwRS-184 | Lizenzabhängige Einstellungsseiten kennzeichnen sich über eine eigene Schnittstelle | ja | belegt | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 397-404 |
|
||||
| SwRS-192 | [HYPOTHESE] Die als unsicher geltende Binärserialisierung wird nur für einen Zweck genutzt | ja | HYPOTHESE | `Directory.Build.props`, Zeilen 40-43 |
|
||||
| SwRS-195 | [HYPOTHESE] Fremdbestandteile werden ausschließlich über Paketverwaltung bezogen | ja | HYPOTHESE | `nugets/` mit 13 Paketen, darunter zwei FastReport-Hauptversionen |
|
||||
| SwRS-197 | [HYPOTHESE] Statische Zwischenspeicher sind für den Mehrmandantenbetrieb geeignet | ja | HYPOTHESE | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeile 182 (`private static ITwoFactorValidator _globalValidator;`) |
|
||||
| SwRS-198 | [HYPOTHESE] Die zweite Steuerelementbibliothek dient der Produktvorschau | ja | HYPOTHESE | `src/shared/Centron.Controls.Preview/` |
|
||||
| SwRS-199 | [HYPOTHESE] Migrationsskripte enthalten keine fachlichen Regeln | ja | HYPOTHESE | `src/backend/Centron.BL/Administration/Scripts/ScriptMethods/Scripts/ScriptMethod11152.cs` Zeilen 53 und 144 sowie sieben weitere Skripte mit identischer Zuweisung |
|
||||
---
|
||||
|
||||
## 6. Abgleich `Hypothesen.md` gegen die Inline-Markierungen
|
||||
|
||||
Geprüft wurde maschinell über alle drei Spezifikationsdateien, ob die Menge der Anforderungen mit `Status: HYPOTHESE` und die Menge der Anforderungen mit `[HYPOTHESE]`-Markierung im Block deckungsgleich sind und ob `Hypothesen.md` genau diese Anforderungen aufführt.
|
||||
|
||||
| Prüfung | Ergebnis |
|
||||
|---|---|
|
||||
| Anforderungen mit `Status: HYPOTHESE` | 33 |
|
||||
| Anforderungen mit `[HYPOTHESE]`-Markierung in der Aussage | 33 |
|
||||
| Nur `Status`, keine Inline-Markierung | 0 |
|
||||
| Nur Inline-Markierung, kein `Status` | 0 |
|
||||
| In `Hypothesen.md` aufgeführt | 33 |
|
||||
| Zusätzliche freie Fragen in `Hypothesen.md` | 0 |
|
||||
|
||||
Beide Mengen sind deckungsgleich. Offene Punkte ohne zugehörige Anforderung stehen ausschließlich in Abschnitt 7.6 dieses Berichts, nicht in `Hypothesen.md`.
|
||||
|
||||
Verteilung der Hypothesen über die Ebenen: StRS 5, SyRS 17, SwRS 11. Anteil an allen Anforderungen: 7,6 %.
|
||||
|
||||
---
|
||||
|
||||
## 7. Selbstbewertung
|
||||
|
||||
### 7.1 Analysetiefe je Modul — absolute Zahlen
|
||||
|
||||
| Einstufung | Module | Anteil am Inventar |
|
||||
|---|---|---|
|
||||
| tief (≥ 8 Anforderungen) | 9 | 5,0 % |
|
||||
| mittel (3–7 Anforderungen) | 108 | 60,3 % |
|
||||
| flach (1–2 Anforderungen) | 62 | 34,6 % |
|
||||
| nicht analysiert (0 Anforderungen) | **0** | **0 %** |
|
||||
| **Summe** | **179** | **100 %** |
|
||||
|
||||
Tief analysiert wurden neun Module: M01 Belegwesen (26 Anforderungen), M143 Authentifizierung & Ticketverwaltung (14), M95 Rechteverwaltung (12), M58 Ticket-Liste/Helpdesk (10), M110 Lizenzverwaltung (10), M179 Anwendungsrahmen und Modulregistrierung (10), M128 Nexus Kundenportal (9), M162 Datenzugriff (8) und M163 Datenbank-Skriptmotor (8). Die Auswahl folgt Schritt 0c: Sicherheitsregeln (M143, M95, M110, M128), Abrechnungs- und Fakturierungslogik (M01) sowie Berechtigungsprüfungen (M95, M58, M179); M162 und M163 kamen hinzu, weil der Belegspeicherpfad und die Schemamigration die Grundlage jeder Datenübernahme in ein Zielsystem bilden.
|
||||
|
||||
Die Abrechnungsseite verteilt sich über mehrere Module und erscheint dadurch in der Einzelbetrachtung als `mittel`: M14 Vertragsabrechnung (7), M27 Kontingentverwaltung (4), M18 Klick-Zählerverwaltung (4), M35 Mehrwertsteuerverwaltung (4), M31 SEPA-Zahlungsverkehr (4) und M28 Mahnwesen (3) tragen zusammen 26 Anforderungen zur Fakturierung bei.
|
||||
|
||||
### 7.2 Mindestabdeckung
|
||||
|
||||
Die Mindestabdeckung aus Schritt 0b ist **vollständig erreicht**: Jedes der 179 Inventarmodule trägt mindestens eine Anforderung. Kein Modul musste als `nicht analysiert` geführt werden.
|
||||
|
||||
Erreicht wurde dies in zwei Schritten: Nach der Vertiefung trugen 151 der zunächst 174 Module eine Anforderung. Für die verbleibenden 28 Module wurden mit `SyRS-210` bis `SyRS-237` gezielt Anforderungen ergänzt, die den belegbaren Kern des jeweiligen Moduls beschreiben. Fünf weitere Module (M175–M179) wurden erst während der Vertiefung erkennbar und dem Inventar nachgetragen; sie werden durch bereits vorhandene Anforderungen abgedeckt.
|
||||
|
||||
### 7.3 Belegsituation
|
||||
|
||||
| Kennzahl | Wert |
|
||||
|---|---|
|
||||
| Belege gesamt | 945 |
|
||||
| davon `PRIMÄR` | 766 (81,1 %) |
|
||||
| davon `SEKUNDÄR` | 113 (12,0 %) |
|
||||
| davon `KONTEXT` | 66 (7,0 %) |
|
||||
| Anforderungen ohne `PRIMÄR`-Beleg | 0 |
|
||||
| Anforderungen mit genau einem Beleg | 57 (13,1 %) |
|
||||
| Belege je Anforderung im Mittel | 2,18 |
|
||||
|
||||
**Wo der Beleg dünn ist.** Ein hoher Anteil `SEKUNDÄR`/`KONTEXT` beziehungsweise nur ein einzelner Beleg tritt an drei erkennbaren Stellen auf:
|
||||
|
||||
1. **Module, die ausschließlich über ihre Registrierung belegt sind.** Bei 62 flach analysierten Modulen stützt sich die Anforderung im Kern auf den Registrierungsblock in `ModuleRegistration.cs` (Rechte- und Lizenzbedingung) und die Eigenschaften `ModuleName`/`Description` des Modulcontrollers. Das ist ein `PRIMÄR`-Beleg für *Existenz, Berechtigung und Zweck* des Moduls, aber kein Beleg für sein *inneres Verhalten*. Betroffen sind vor allem die Module M15, M17, M19, M20, M25, M29, M38, M42, M55, M77, M84, M86, M113, M114, M117, M146.
|
||||
2. **Nicht-funktionale Anforderungen zum Betrieb.** Verfügbarkeit, Datensicherung, Antwortzeiten und Barrierefreiheit (SyRS-196 bis SyRS-198) beruhen auf dem Fehlen entsprechender Festlegungen in der Codebasis. Sie sind durchgängig als `[HYPOTHESE]` geführt, weil ein solcher Negativbefund statisch nicht abschließend beweisbar ist.
|
||||
3. **Bereiche ohne Modul- oder Konfigurationsanbindung.** Bei M175 Gutscheinverwaltung, M176 IT-Planer und M178 DocuBoard konnte nur die Existenz der Geschäftslogik und ihrer Datenstrukturen belegt werden, nicht ihre Erreichbarkeit für Anwender. Alle drei sind als `[HYPOTHESE]` geführt.
|
||||
|
||||
Die Dokumentation unter `docs/` wurde durchgängig als `KONTEXT` eingestuft, auch wo sie fachlich sehr präzise ist (etwa die Belegarchitektur oder die ZUGFeRD-Feldabbildung). Sie trägt allein keine Anforderung; wo sie herangezogen wurde, steht daneben stets ein `PRIMÄR`-Beleg aus dem Code, dem Schema oder der Konfiguration.
|
||||
|
||||
### 7.4 Konsolidierungsbedarf
|
||||
|
||||
86 Anforderungen (19,8 %) sind als Konsolidierungskandidat vermerkt. Gemeint sind ausschließlich fachlich gleichartige Konzepte in **getrennten Implementierungen oder Datenhaltungen** — nicht Anforderungen, die denselben Sachverhalt aus Sicht verschiedener Ebenen beschreiben; für letztere sind die Tracelinks zuständig.
|
||||
|
||||
Die gewichtigsten Fälle, nach fachlicher Tragweite geordnet:
|
||||
|
||||
| # | Gegenstand | Getrennte Umsetzungen | Anforderungen |
|
||||
|---|---|---|---|
|
||||
| 1 | **Geschäftspartner** | Kundenmodell (`Customer`, `CustomerArea`) und Kontomodell (`Account`, `Accounts`) vollständig parallel über alle Schichten, umgeschaltet über eine Einstellung; `WebAccounts` führt Bezugsfelder beider Modelle | StRS-084, SyRS-173, SwRS-173, SwRS-040 |
|
||||
| 2 | **Gerät beim Kunden** | Stammblatt (`MasterDataList`), Gerät (`AccountDevice`) und IT-Bestandserfassung (`DocuBoard/AssetManagement*`) — drei Datenhaltungen für denselben Gegenstand | StRS-051, StRS-100, SyRS-130, SwRS-130 |
|
||||
| 3 | **Nachvollziehbarkeit von Änderungen** | Audit-Felder, Belegversionstabellen, `AnlageLog`, `ChangeTracking` und `AppRightLog` — fünf Mechanismen | StRS-080, SyRS-007, SwRS-161, SwRS-162 |
|
||||
| 4 | **Belegpersistenz** | moderne NHibernate-Entitäten mit Sichten und Legacy-Repositories mit temporären Entitäten — zwei Pfade, von denen nur einer schreibt | SwRS-007, SwRS-008, SwRS-009 |
|
||||
| 5 | **Datenzugriff des Clients** | je Schnittstelle eine `BL…Logic`- und eine `WS…Logic`-Umsetzung, verbindlich für jedes Modul | StRS-071, SyRS-151, SwRS-151 |
|
||||
| 6 | **Aufgabe** | `TaskManager` (rechtegebunden, mit Historie) und `ToDoArea` (ohne Rechteprüfung), einschließlich zweier Steuerelementbereiche | StRS-055, SyRS-134, SwRS-134 |
|
||||
| 7 | **Benachrichtigung** | `Notifications`, `NexusNotifications` und die Update-Benachrichtigung | StRS-066, SyRS-145, SyRS-235, SwRS-145 |
|
||||
| 8 | **Wiederverwendbarer Text** | globale Mailvorlagen, persönliche Mailvorlagen, Eskalationsvorlagen, Vertragsvorlagen und Textbausteine | StRS-036, SyRS-114, SwRS-114 |
|
||||
| 9 | **Platzhalterersetzung** | `HelpdeskReplacementBL`, `AdressstammReplacementBL`, `ExternalToolsReplacementBL` und `ReportEngine/ReplacementBLs` | SyRS-147, SwRS-114, SwRS-147 |
|
||||
| 10 | **Elektronische Rechnung** | Eigenimplementierung `InvoiceZugferdBL`, Gateway `ZUGFeRD21_Extended` und `Centron.Api.EbInterface` | StRS-018, SwRS-074, SwRS-075 |
|
||||
| 11 | **Externe Artikelquelle** | vier Anbieter (COP, EGIS, ITscope, Icecat) plus TradePool ohne gemeinsame Abstraktion | StRS-063, StRS-090, SyRS-142, SwRS-142 |
|
||||
| 12 | **Fremdsystemdaten** | RMM, DocBee, Tanss, TelekomDive und docuFORM als fünf getrennte Konnektoren, verteilt auf zwei Controllerbereiche | StRS-064, SyRS-143, SwRS-143, SwRS-144 |
|
||||
| 13 | **Vertrag** | Kundenvertrag (`ReceiptContract`) und Lieferantenvertrag (`AccountContract`) mit je eigener Vertragsart | StRS-083, SyRS-172, SwRS-172 |
|
||||
| 14 | **Projekt** | CRM-Projekt, Ticketprojekt und herstellerinterne Projektverwaltung | SyRS-210, SyRS-228 |
|
||||
| 15 | **Inventur** | `InventoryBL` und `InventoryNewBL` mit gleicher Aufgabe | StRS-023, SyRS-084, SwRS-083 |
|
||||
| 16 | **Zahlungseingang** | Bankabruf (finAPI), OPOS-Import und manuelle Erfassung | StRS-062, SyRS-217, SyRS-218 |
|
||||
| 17 | **Unterschrift** | PDF-Signatur (`PdfSigningBL`), Browser-Unterschrift (`DocumentSigning`) und hinterlegte Mitarbeiterunterschrift (`Sichbenu.Unterschrift`) | StRS-038, StRS-039, SwRS-117 |
|
||||
| 18 | **Ticketvorlage** | WPF-Modul „Ticketprozess Vorlagen" und Nexus-Vorlageneditor mit unterschiedlichem Umfang | StRS-054, SyRS-133, SwRS-133 |
|
||||
| 19 | **Auslastungsauswertung** | „Leistungsnachweise" und „Mitarbeiterauslastung" | SyRS-229, StRS-029 |
|
||||
| 20 | **Versanddienstleister** | GLS und Shipcloud als eigenständige Assemblies ohne gemeinsame Schnittstelle | SyRS-089, SwRS-087 |
|
||||
|
||||
### 7.5 Übernahmewürdigkeit und Anforderungstypen
|
||||
|
||||
| Übernahmewürdigkeit | Anzahl | Anteil |
|
||||
|---|---|---|
|
||||
| übernehmen | 381 | 87,8 % |
|
||||
| Workaround | 31 | 7,1 % |
|
||||
| veraltet | 12 | 2,8 % |
|
||||
| Sonderfall | 10 | 2,3 % |
|
||||
|
||||
| Typ | Anzahl |
|
||||
|---|---|
|
||||
| funktional | 171 |
|
||||
| Sicherheit | 78 |
|
||||
| Daten | 75 |
|
||||
| Schnittstelle | 62 |
|
||||
| nicht-funktional | 48 |
|
||||
|
||||
Alle 48 nicht-funktionalen Anforderungen tragen ein Qualitätsmerkmal nach ISO/IEC 25010 im dafür vorgesehenen Feld `Qualitätsmerkmal`. Verteilung: Wartbarkeit 7, Analysierbarkeit 6, Modifizierbarkeit 5, Testbarkeit 5, Benutzbarkeit 4, Übertragbarkeit 4, Performance-Effizienz 4, Fehlertoleranz 2, Zuverlässigkeit 2, Installierbarkeit 2, Anpassbarkeit 2, Verantwortlichkeit 2, Zeitverhalten 1, Verfügbarkeit 1, Zugänglichkeit 1.
|
||||
|
||||
Die 12 als `veraltet` eingestuften Anforderungen betreffen: das Kennwortverfahren (SyRS-031), die Delphi-Versionsausnahme (SyRS-021, SwRS-196), den Buchhaltungsexport/-import als Modul (StRS-019), die Bestellvorschlagsliste (StRS-024), die Reisekostenabrechnung (StRS-060), den Passwort-Manager-Bereich (SyRS-148, SwRS-148, SyRS-233, SyRS-234), den doppelten Belegspeicherpfad (SwRS-007, SwRS-008) und die Binärserialisierung (SwRS-192).
|
||||
|
||||
### 7.6 Offene Punkte ohne zugehörige Anforderung
|
||||
|
||||
Diese Punkte sind bewusst **nicht** in `Hypothesen.md` aufgenommen, weil ihnen keine Anforderung entspricht:
|
||||
|
||||
1. **Umfang der Belegverarbeitung.** `ReceiptBL.cs` umfasst 11.441 Zeilen, `ReceiptItemBL.cs` 4.290. Der Speicherpfad wurde vollständig ausgewertet (rund 40 benannte Prüfungen), die übrigen Verantwortlichkeiten der beiden Klassen — Preisberechnung, Belegumwandlung, Druck, Versand — nur soweit, wie sie im Speicherpfad sichtbar werden. Hier liegt der größte verbleibende Fachlogikbestand.
|
||||
2. **Datenbanksichten und Funktionen.** Das Schema mit 1.535 Tabellen wurde für Struktur- und Constraintfragen ausgewertet; die in Sichten und Funktionen enthaltene Logik wurde nicht systematisch gelesen. SwRS-199 benennt dies als Risiko, kann es aber nicht beziffern.
|
||||
3. **790 Migrationsskripte.** Ausgewertet wurden die Ausführungsmechanik und stichprobenhaft der Inhalt; eine vollständige Durchsicht auf ausschließlich dort enthaltene Fachregeln steht aus.
|
||||
4. **460 Razor-Komponenten des Webportals.** Die Bereichsstruktur und die sicherheitsrelevanten Bausteine (Autorisierung, Ticketfilter) wurden ausgewertet; das Verhalten der einzelnen Oberflächenkomponenten nicht.
|
||||
5. **Change-Historie und Projektartefakte.** Im Arbeitsverzeichnis liegt kein Git-Verlauf, kein Ticketexport und keine Release-Notes-Datei. Als Change-Informationen standen ausschließlich Quellcodekommentare mit Datum und Auftraggeber zur Verfügung (etwa „SKA 2025-09-18 : Requested by Volker Lehnert"), die `changelog.txt` im Nexus-Projekt sowie das Feature-Dokument mit Implementierungsdatum. Schritt 2 der Methodenkette konnte für diesen Artefakttyp daher nur eingeschränkt ausgeführt werden.
|
||||
6. **Testinhalte.** Die Teststruktur wurde erfasst, die Testfälle selbst nicht gelesen. Sie sind eine ergiebige Quelle für erwartetes Verhalten, insbesondere die End-zu-End-Tests, die laut Belegarchitektur die Rohwerte der Legacy-Tabellen prüfen.
|
||||
7. **Verhältnis zu Riverbird.** SyRS-201 hält die Kopplung als Hypothese fest; welche Anforderungen dieser Spezifikation für das Schwesterprodukt mitgelten, ist ohne dessen Produktbeschreibung nicht entscheidbar.
|
||||
|
||||
### 7.7 Erkenntnisse für eine Folge-Iteration
|
||||
|
||||
Nach fachlicher Tragweite geordnet:
|
||||
|
||||
1. **Belegverarbeitung vertiefen.** `ReceiptBL` außerhalb des Speicherpfads — insbesondere Preisberechnung (`ReceiptPriceHelperBL`), Belegumwandlung und Mengenfortschreibung zwischen den Belegarten. Hier entstehen die betragswirksamen Regeln, deren Verlust bei einer Neuimplementierung unmittelbar Geld kostet.
|
||||
2. **Kontingent- und Zählerabrechnung vertiefen.** `AutomaticFacturaBL.Contracts.cs` wurde für Intervalle, Kontingente und Zählerbezug ausgewertet; die Preisbildung aus Freimengen, Staffelpreisen, Über- und Unterlieferung sowie die Rückrechnung bei Vertragsänderungen sind noch nicht durchdrungen.
|
||||
3. **Sichten und Funktionen der Datenbank lesen.** SwRS-199 benennt den Verdacht, dass fachliche Regeln ausschließlich in der Datenbank stehen. Solche Regeln sind bei einer Neuimplementierung besonders gefährdet, weil sie im Anwendungscode unsichtbar sind.
|
||||
4. **Die 33 Hypothesen mit Fachexperten klären.** Vorrangig die sicherheitsrelevanten: Kennwortablauf (StRS-098), Kontosperre nach Fehlversuchen (SyRS-039), Wirksamkeit von Rechteentzügen (SyRS-200), Mandantentrennung (SyRS-199) und Transportverschlüsselung (SyRS-194).
|
||||
5. **Die 62 flach analysierten Module vertiefen**, beginnend mit denen, die Geld bewegen: M15 Pauschalabrechnung, M29 OPOS, M30 Zahlungseingang, M38 Kalkulation pro Filiale, M42 Belegerfassung, M55 Projektpreis-Import.
|
||||
6. **Testfälle als Anforderungsquelle auswerten.** Insbesondere `tests/Centron.Tests.EndToEnd` und `tests/backend/Centron.Tests.BL` beschreiben erwartetes Verhalten in prüfbarer Form und decken Regeln auf, die aus dem Produktivcode allein nicht erkennbar sind.
|
||||
7. **Konsolidierungsentscheidungen fachlich treffen.** Die 20 in Abschnitt 7.4 aufgeführten Fälle sind Entwurfsentscheidungen für das Zielsystem, keine Analysebefunde. Sie sollten vor dem Zielentwurf entschieden werden, weil sie den Datenmodellschnitt bestimmen — insbesondere die Fälle 1 (Geschäftspartner) und 2 (Gerät beim Kunden).
|
||||
8. **Change-Historie erschließen.** Sofern Git-Verlauf, Tickets oder Release Notes beigestellt werden können, ist Schritt 2 der Methodenkette für diesen Artefakttyp zu wiederholen; er liefert die Begründungen hinter den als `Workaround` und `veraltet` eingestuften Anforderungen.
|
||||
|
||||
---
|
||||
|
||||
## 8. Randbedingungen und Selbstauskunft zur Durchführung
|
||||
|
||||
- **Keine Halluzinationen.** Jede Anforderung führt mindestens einen konkreten Artefaktbeleg mit Pfad und, wo möglich, Zeilenangabe. Wo eine Aussage nicht belegt werden konnte, ist sie als `[HYPOTHESE]` mit Angabe der fehlenden Information geführt oder gar nicht erhoben worden.
|
||||
- **Keine Codegenerierung.** Es sind ausschließlich Spezifikationsartefakte entstanden.
|
||||
- **Keine Annahme über nicht beigestellte Hilfsmittel.** Verwendet wurden ausschließlich Lesen und Suchen von Dateien sowie Kommandozeilenbefehle im Arbeitsverzeichnis. Es wurde kein System ausgeführt, keine Datenbank verbunden und kein externer Dienst aufgerufen. Die Auswertung der Anforderungsdateien für Traceability-Tabelle, Konsistenzcheck und Abdeckungstabelle erfolgte über ein Auswertungsskript, das ausschließlich auf den selbst erzeugten Ergebnisdateien arbeitet.
|
||||
- **Codebasis unverändert.** Im Arbeitsverzeichnis `C:\DEV\MasterArbeit\QuellCode\CentronERP` wurde ausschließlich gelesen. Alle Ergebnisdateien liegen im vorgegebenen Ausgabeverzeichnis.
|
||||
- **Sprache.** Anforderungsaussagen in Deutsch; technische Bezeichner (Klassen, Methoden, Spalten, Konstanten) in ihrer Originalsprache.
|
||||
|
||||
### Erzeugte Dateien
|
||||
|
||||
| Datei | Inhalt | Umfang |
|
||||
|---|---|---|
|
||||
| `StRS.md` | Stakeholder Requirements Specification | 100 Anforderungen |
|
||||
| `SyRS.md` | System Requirements Specification | 190 Anforderungen |
|
||||
| `SwRS.md` | Software Requirements Specification | 144 Anforderungen |
|
||||
| `Traceability.md` | konsolidierte Verfolgbarkeitstabelle | 299 Zeilen; alle 434 Anforderungen enthalten, keine ohne Verknüpfung zur nächsthöheren Ebene |
|
||||
| `Hypothesen.md` | alle mit `[HYPOTHESE]` markierten Aussagen mit offener Frage | 33 Einträge |
|
||||
| `Glossar.md` | Domänenbegriffe mit Fundstelle | 10 Abschnitte |
|
||||
| `Analysebericht.md` | Modulinventar, Abdeckung, Konsistenzcheck, Risikoliste, Selbstbewertung | dieses Dokument |
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
# Glossar — Domänenbegriffe der c-entron ERP-Suite
|
||||
|
||||
**Zweck:** Definition aller domänenspezifischen Begriffe, die in `StRS.md`, `SyRS.md` und `SwRS.md` verwendet werden.
|
||||
**Quelle:** ausschließlich Artefakte des Arbeitsverzeichnisses. Jeder Eintrag nennt die Fundstelle, aus der die Bedeutung abgeleitet ist.
|
||||
**Lesehinweis:** Technische Bezeichner (Klassen, Methoden, Spalten) sind in ihrer Originalsprache belassen. Wo das Produkt einen deutschen und einen englischen Bezeichner für denselben Gegenstand führt, sind beide genannt.
|
||||
|
||||
---
|
||||
|
||||
## A — Geschäftsobjekte des Belegwesens
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Beleg** | Oberbegriff für Angebot, Auftrag, Lieferschein, Rechnung, Vertrag, Gutschrift und Abholschein. Alle Belegarten erben von `ReceiptBase` und teilen Kopffelder, Zustand, Nummer, Adress- und Währungsangaben. | `src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptBase.cs` |
|
||||
| **Belegart** (`ReceiptKind`, `CentronObjectKindNumeric`) | Typkennzeichen eines Belegs. Die Zahlwerte erscheinen unter anderem im Protokoll `AnlageLog` als `AnlageArt`: 1 = Angebot, 2 = Auftrag, 3 = Lieferschein, 4 = Rechnung, 5 = Abholschein, 6 = Gutschrift, 22 = Vertrag. | `docs/reference/receipts/receipts-backend-architecture.md`, Abschnitt „AnlageLog Table" |
|
||||
| **Belegkopf** (`*Kopf`) | Kopfdatensatz eines Belegs mit Kunde, Datum, Adresse, Währung und Zustand. Tabellen: `AngKopf`, `AufKopf`, `LiefKopf`, `RechKopf`, `VertragKopf`, `GutKopf`, `AbholKopf`. | `SSMS_DB_SCHEMA.sql` |
|
||||
| **Belegposition** (`*Pos`) | Einzelzeile eines Belegs. Die Positionsart (`ReceiptItemKind`) unterscheidet unter anderem `Article` (Artikelposition) und `CustomerDiscount` (Kundenrabatt) von Text- und Gliederungspositionen. | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `CheckIfAllArticlePositionsHaveVatRate` |
|
||||
| **Belegzustand** (`ReceiptState`) | Genau drei Werte: `Active` = „offen", `Completed` = „abgeschlossen", `Canceled` = „storniert". | `src/backend/Centron.Interfaces/Sales/Receipts/ReceiptState.cs` |
|
||||
| **Web-Belegzustand** (`WebReceiptState`) | Vom Belegzustand getrennter Zustandsraum für die Sicht des Kunden im Portal (Freigabe/Ablehnung eines Angebots). | `src/backend/Centron.Interfaces/Sales/Receipts/WebReceipt/WebReceiptState.cs` |
|
||||
| **Ursprungsverweis** (`OriginReceiptI3D`, `OriginKind`, `OriginReceiptItemI3D`) | Tripel, über das eine Belegposition auf die Position des Vorgängerbelegs verweist; Grundlage der Belegkette. | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8084-8090 |
|
||||
| **Belegversion** (`*KopfVersions`, `*PosVersions`) | Vollständige Kopie eines Belegstands vor einer Änderung; Versionstabellen sind 1:1-Abbilder der Originaltabellen mit den Zusatzspalten `OriginalI3D` und `KopfVersionsI3D`. | `docs/reference/receipts/receipts-backend-architecture.md` |
|
||||
| **Belegskondition** (`ReceiptCondition`, `AssetCondition`) | Konditionstext eines Belegs mit Mindestbetrag (`MinimumAmount`); für Kundenbelege verpflichtend. | `ReceiptBL.UpdateConditionTextsAndCheckMinPrices` |
|
||||
| **Lieferbedingung** (`DeliveryCondition`) | Kondition zur Lieferung, ebenfalls mit Mindestbetrag; für einzelne Belegarten über `AllowNullDeliveryCondition` abwählbar. | ebenda |
|
||||
| **Zahlungskondition** (`PaymentCondition`) | Zahlungsziel und -art; kann einen neu angelegten Beleg unmittelbar abschließen (`ShouldCloseNewReceiptAutomatically`) und ein SEPA-Mandat erfordern. | `ReceiptBL.UpdateReceiptStateFromPaymentCondition`, `CheckIfMandatIsNeeded` |
|
||||
| **Nummernkreis** (`NumberGroup`) | Zählerbestand je Belegart, Mandant und Filiale, aus dem die Belegnummer gezogen wird. | `ReceiptBL.UpdateReceiptNumber`, `NumberGroupBL.GetNextNumber` |
|
||||
| **Vorlagenkunde** | Kundennummer, auf die Belege lauten, die als Vorlage dienen; ihre Nummern stammen aus einem eigenen Kreis. | `ReceiptBL.UpdateReceiptNumber`, `GetReceiptTemplateCustomerNumber()` |
|
||||
|
||||
## B — Vertrag und Abrechnung
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Vertrag** (`ReceiptContract`, `VertragKopf`) | Belegart für Dauerschuldverhältnisse mit Laufzeit, Abrechnungsintervall, Kontingent und Geräteverbund. | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| **Abrechnungsintervall** (`BillingIntervalKind`, `BillingIntervalDuration`) | Art (Daily, Monthly, Quarterly, Yearly) und Vielfaches der Abrechnungsperiode. `Quarterly` wird intern mit ×3, `Yearly` mit ×12 in Monate umgerechnet. | `AutomaticFacturaBL.StoreBookedContingent`, Zeilen 1103-1116 |
|
||||
| **Kontingent** (`Kontingent…`) | Im Vertrag vereinbartes Leistungsvolumen (Stunden oder Betrag), das durch erbrachte Leistungen verbraucht wird. | `docs/reference/receipts/contracts-backend.md`, Abschnitt „Contingent Management" |
|
||||
| **Überbuchung** (`KontingentUeberbuchung`) | Zulassung eines Verbrauchs über das vereinbarte Kontingent hinaus. | `AutomaticFacturaBL.StoreBookedContingent` |
|
||||
| **Restübertrag** (`KontingentRestMitnehmen`) | Übertrag eines nicht verbrauchten Kontingentrests in die Folgeperiode; entfällt bei Wechsel der Kontingentart. | `AutomaticFacturaBL.Contracts.cs`, Zeilen 1046-1051 |
|
||||
| **Kontingentzuordnung** (`VertragRechKopfZuordnung`) | Datensatz, der Vertrag und erzeugte Rechnung verbindet und die Kontingentparameter samt Buchungszeitraum (`GebuchtVon`/`GebuchtBis`) festschreibt. | ebenda, Zeilen 1066-1101 |
|
||||
| **Vertragsabrechnung** (`AutomaticFactura`) | Periodische Erzeugung von Rechnungen aus Verträgen. | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/` |
|
||||
| **Pauschalabrechnung** | Abrechnungsverfahren auf Auftragsbasis, ausschließlich bei direkter Datenbankverbindung nutzbar. | `FlatRateProjectAppModuleController` |
|
||||
| **Vereinfachte Ticketabrechnung** (`TimerBilling`) | Abrechnung einzelner Ticketzeiten ohne Vertragsbezug. | `TimerBillingAppModuleController` |
|
||||
| **Klick-Zähler** (`DeviceClickCounter`, `CounterDevice`) | Zählerstand eines Druck- oder Kopiersystems als Grundlage der verbrauchsabhängigen Abrechnung. | `src/centron/Centron.WPF.UI/Modules/Finances/DeviceClickCounter/` |
|
||||
| **Freimenge** (`CounterFreeCount`) | Im Vertrag enthaltene, nicht gesondert berechnete Zählermenge. | `AutomaticFacturaBL.GetCounterFreeCount` |
|
||||
| **Staffelpreis** (`CounterScalePrices`) | Mengenabhängiger Preis je Zählereinheit. | `AutomaticFacturaBL.GetCounterScalePrices` |
|
||||
| **Provisionsschema** (`ReceiptProvisionSchema`) | Regelwerk zur Berechnung von Vertriebsprovisionen, das Kunden zugeordnet wird. | `src/backend/Centron.BL/Sales/Receipts/ReceiptProvisionSchemaBL.cs` |
|
||||
| **Sondervereinbarung** (`SpecialAgreementI3D`) | Kunden- oder projektbezogene Preisabrede, die für bestimmte Artikel zwingend vorliegen muss. | `ReceiptBL.CheckIfArticlesWithLicenseeRequiredHaveASpecialAgreementI3D` |
|
||||
| **Sonderpreis** | Kundenbezogener Preis; zugleich Sortimentsquelle des Kundenportals. | `README.md`, Abschnitt „Contributing / 1. WebCart" |
|
||||
|
||||
## C — Kunde, Adresse und Zugang
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Kunde** (`Customer`, `KundenI3D`) | Geschäftspartner im historischen Adressmodell. | `src/backend/Centron.BL/CustomerArea/` |
|
||||
| **Konto** (`Account`) | Geschäftspartner im neuen Adressmodell; wird über die Einstellung `IsAccountManagementActive` anstelle des Kundenmodells aktiviert. | `src/backend/Centron.BL/Accounts/`, `ModuleRegistration.cs` Zeilen 103-111 |
|
||||
| **Adressstamm** | Fachliche Bezeichnung des Moduls zur Partnerverwaltung; heißt im alten Modell „Adressen & Belege", im neuen „Adressstamm". | `CrmAppModuleController`, `AccountManagementAppModuleController` |
|
||||
| **Web-Account** (`WebAccount`) | Zugang eines Kundenmitarbeiters zum Kundenportal; eigener Zugangstyp mit eigenen Web-Rechten. | `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs` |
|
||||
| **Kundenadministrator** | Web-Recht 31005, das einem Kundenzugang die Verwaltung weiterer Zugänge und die Sicht auf alle Vorgänge seines Unternehmens erlaubt. | `WebRightsVisibility.AllowedRightIds` |
|
||||
| **Kreditlimit** (`CreditLimit`, `CreditLimitCalculationKind`) | Höchstbetrag des offenen Belegvolumens eines Kunden; Berechnungsart 1 = netto, sonst brutto, 2 = keine Prüfung. | `ReceiptBL.CheckIfCustomerLimitIsReached` |
|
||||
| **Filiale** (`Branch`, `BranchI3D`) | Organisatorische Untereinheit eines Mandanten; bestimmt Nummernkreis, Rechteumfang und Auswertungsabgrenzung. | `ReceiptBL.GetBranchForNewReceipt`, `AppRightsBL` |
|
||||
| **Filialherkunft** (`BranchOrigin`) | Regel, aus welcher Person die Filiale eines Belegs abgeleitet wird: `Creator` (Ersteller) oder `Adviser2` (zweiter Berater). | `ReceiptBL.GetBranchForNewReceipt` |
|
||||
| **Mandant** (`Mandator`, `MandantID`) | Rechtlich selbständige Einheit mit eigenen Stammdaten und eigener Bankverbindung. | `MandatorBL`, `SSMS_DB_SCHEMA.sql`, `Sichbenu.MandantID` |
|
||||
|
||||
## D — Service und Helpdesk
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Helpdesk / Ticket** (`Helpdesk`) | Serviceanfrage mit Status, Priorität, Typ, Kategorie, verantwortlicher Person und Fälligkeitsdatum. Beide Begriffe bezeichnen im Produkt denselben Gegenstand. | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs` |
|
||||
| **Ticketzeit** (`HelpdeskTimer`) | Erfasste Arbeitszeit an einem Ticket, bewertet über einen Mitarbeiterartikel und einen Zeitarttyp; Abrechnungsgrundlage. | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs` |
|
||||
| **Ticketvorlage / C-FLOW-Ticketvorlage** (`TicketPattern`) | Vorlage für einen Serviceprozess aus Allgemeinangaben, Kundenbezug, Checklisten, Formularen, Mailvorlage, Eigenschaften, Skripten, internen Angaben und Webformular. | `src/nexus/CentronNexus/Management/TicketPatterns/` |
|
||||
| **Ticketprozess-Vorlage** | Bezeichnung desselben Gegenstands im Windows-Client. | `TicketProcessTemplateAppModuleController` |
|
||||
| **Checkliste** | Abzuarbeitende Punkteliste an einem Ticket; wird aus einer Checklistenvorlage erzeugt, je Punkt mit eigenem Bearbeiter. | `CentronRights.md`, Abschnitt 16 |
|
||||
| **Eskalation** | Automatische Meldung bei Überschreitung einer Bearbeitungs- oder Reaktionsfrist; Eskalationstypen und Mailvorlagen sind getrennt konfigurierbar. | `src/backend/Centron.BL/Sales/Support/Escalation/EscalationBL.cs` |
|
||||
| **Erwartetes Event** (`ExpectedEvent`) | Ereignis, dessen Ausbleiben innerhalb eines Zeitfensters eine Meldung auslöst. | `src/backend/Centron.BL/ExpectedEvents/` |
|
||||
| **Einschränkendes Recht** (*restricting right*) | Recht, das den Datenausschnitt eines Benutzers verkleinert statt vergrößert, etwa `SHOW_HELPDESK_ONLY_OWN` oder `SHOW_HELPDESK_ONLY_OWN_BRANCH`. | `CentronRights.md`, Abschnitte 1.1 und 1.2 |
|
||||
| **RMA** | Rücksendungs- und Werkstattvorgang (*return merchandise authorisation*) mit eigener Versandart und Statusverfolgung. | `RmaOverviewAppModulController` |
|
||||
| **Taskmanagement / Todo-Liste** | Zwei getrennte Aufgabenverwaltungen: `TaskManager` (rechtegebunden, mit Historie und Ticketbezug) und `ToDoArea` (ohne Rechteprüfung). | `src/backend/Centron.BL/TaskManager/`, `ToDoArea/` |
|
||||
|
||||
## E — Artikel, Bestand und Logistik
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Artikel** (`Article`, `ArtikelI3D`, `ArticleCode`) | Zentraler Stammdatensatz für Verkauf, Einkauf, Lager und Preisfindung. | `src/backend/Centron.BL/Warehousing/ArticleBL.cs` |
|
||||
| **Warengruppe** (`MaterialGroup`) | Klassifizierung von Artikeln; besondere Warengruppen werden gesondert behandelt. | `MaterialGroupBL`, `MaterialGroupSettingsAppModuleSettingsController` |
|
||||
| **Nebenlager** (`SecondaryStock`, `secondaryStockI3D`) | Vom Hauptlager getrennter Lagerort; Bestände und Bedarfe werden je Artikel und Lagerort geführt. | `ArticleStockBL` |
|
||||
| **Aktionspreis** (`ActionPrice`, `HerstellerArtikAktionspreis`) | Zeitlich befristeter Preis eines Distributors oder Herstellers mit `GueltigAb`/`GueltigBis`. | `docs/reference/receipts/actionprice-system.md` |
|
||||
| **Stückliste** (`PartList`) | Artikel, der aus Komponenten besteht; im Beleg als aufklappbare Kopfposition mit Komponentenpositionen dargestellt. | `PartListArticleBL`, `ReceiptBL` Zeile 8046 |
|
||||
| **Barcode / Seriennummer** (`ReceiptItemBarcode`) | Gerätebezogene Kennung, die belegbezogen erfasst und gegen Menge, Dubletten und Verarbeitungsstand geprüft wird. | `src/backend/Centron.BL/Sales/Receipts/Internal/ReceiptBarcodeBL.cs` |
|
||||
| **Kommissionierung** (`Commissioning`, `QuantityPicked`) | Bereitstellung der Auftragsware; die kommissionierte Menge wird je Position geführt. | `OrderCommissionBL`, `ReceiptBL.CheckIfQuantityIsReducedBelowPickedQuantity` |
|
||||
| **Inventur** (`Inventory`) | Aufnahme des Ist-Bestands und Buchung der Differenz zum Buchbestand. | `InventoryBL`, `InventoryNewBL` |
|
||||
|
||||
## F — Gerät, Stammblatt und Managed Services
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Stammblatt** (`MasterDataList`) | Geräteakte mit Seriennummer, Zählerstand, Kunde, Standortadresse, Ansprechpartner und Herkunftsbeleg (Rechnung mit Position und Datum). | `src/backend/Centron.Entities/Entities/Sales/Receipts/MasterDataLists/MasterDataList.cs` |
|
||||
| **Stammblattposition** (`MasterDataListItem`) | Einzelposition eines Stammblatts mit Artikel, Menge, Preisen und Barcodesammlung. | ebenda, `MasterDataListItem.cs` |
|
||||
| **Gerät** (`AccountDevice`) | Zweite, getrennte Datenhaltung für dasselbe fachliche Objekt „Gerät beim Kunden" mit Seriennummer, Modell, Hersteller, Standort und Garantieende. | `src/backend/Centron.Entities/Entities/Devices/AccountDevice.cs` |
|
||||
| **MSP** (*Managed Service Provider*) | Betriebsmodell, bei dem IT-Leistungen dauerhaft und nutzungsabhängig erbracht werden. Die MSP-Module sammeln Nutzungsdaten (`MSP-Collector`), vergleichen sie mit dem Vertragsbestand (`MSP-Auswertung`) und stellen sie dar (`MSP-Dashboard`). | `ModuleRegistration.cs` Zeilen 232-244 |
|
||||
| **RMM** (*Remote Monitoring and Management*) | Fremdsystem zur Fernüberwachung von Kundensystemen; liefert Geräte- und Leistungsdaten an die Vertragsabrechnung. | `src/backend/Centron.BL/DataExchange/Rmm/`, `docs/reference/receipts/Contract-Billing-RMM-Article-Logic.md` |
|
||||
| **PLM** (*Product Lifecycle Management*) | Überwachung des Lebenszyklus beim Kunden eingesetzter Produkte und Lizenzen. | `PlmAppModuleController`, `ProductLifecycleBL` |
|
||||
|
||||
## G — Rechte, Lizenzen und Anmeldung
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Recht** (`AppRight`, `Sichrech`, `I3D`) | Einzelberechtigung, identifiziert über eine ganzzahlige Kennung `I3D`; im Code ausschließlich über Konstanten in `UserRightsConst` zu verwenden. | `docs/guides/development/check-userrights.md` |
|
||||
| **Rechtegruppe** (`AppGroup`, `Sichtrus`) | Bündel von Rechten mit optionaler Filialzuordnung; Benutzer erhalten Rechte ausschließlich über Gruppenmitgliedschaft (`Sichmemb`). | `AppRightsBL.GetAllAppRightsFromUser` |
|
||||
| **Web-Recht** (`WebAccountRightsConst`) | Getrennter Rechtesatz für Kundenzugänge; die vergebbaren Rechte sind in einer Positivliste abschließend festgelegt. | `WebRightsVisibility` |
|
||||
| **Lizenz** | GUID, die ein Produkt oder Einzelmerkmal freischaltet; kann Anzahl, Gültigkeitsdatum und höchste Gültigkeitsversion tragen. | `docs/reference/security/licensing-system.md` |
|
||||
| **Anwendungsart** (`ApplicationKind`) | Beschreibung einer anmeldeberechtigten Anwendung mit Lizenz-GUID, erforderlichem Recht, ausschließendem Recht, Sitzungsdauer und Lizenzzählweise. | `Authenticator.GetTicket`, `TicketBL.GetExpireDate` |
|
||||
| **Ticket** (Sitzungsticket, `Ticket`) | Sitzungskennung nach erfolgreicher Anmeldung; anwendungsabhängige Gültigkeitsdauer. **Nicht zu verwechseln** mit dem Servicevorgang „Ticket" (siehe Abschnitt D). | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs` |
|
||||
| **Benutzerkonto** (`AppUser`, `Sichbenu`) | Anmeldekonto eines Mitarbeiters; Deaktivierung wahlweise manuell (`KontoDeakMan`) oder über einen Zeitraum (`KontoDeakVon`/`KontoDeakBis`). | `Authenticator.ValidateAppUser` |
|
||||
| **Zwei-Faktor-Authentifizierung** | Zweiter Anmeldefaktor über RADIUS-Server oder E-Mail-Bestätigung; Gültigkeit kalendertagbezogen je Anwendung, Gerät und IP-Adresse. | `TwoFactorAuthBL` |
|
||||
| **Zugriffstoken** (`AccessToken`) | Widerrufbares Token für den Maschinenzugriff; 48 Zeichen, gespeichert ausschließlich als SHA-256-Hash. | `AccessTokenBL` |
|
||||
| **Hotline-Masterkey** | Schlüssel zur Ver- und Entschlüsselung der im Zugangsverwalter verwahrten Kennwörter; liegt in einer getrennten Konfigurationsdatenbank. | `PasswordManagerBL`, `CentronConfigurationDbBL.GetHotlineMasterKey` |
|
||||
|
||||
## H — Finanzen und Datenaustausch
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **OPOS** | Offene Posten — noch nicht ausgeglichene Forderungen. Der offene Betrag ergibt sich als Bruttobetrag abzüglich Zahlungen und Gutschriften. | `DunningBL`, Zeilen 221-230 |
|
||||
| **Mahnstufe** (`DunningLevel`) | Vier Stufen: `None`, `Level1`, `Level2`, `Level3`. | `DunningBL` |
|
||||
| **SEPA-Lastschrift** | Einzugsverfahren im europäischen Zahlungsraum; unterstützt werden fünf PAIN-Formate von PAIN.008.001.01 bis PAIN.008.001.08 (GBIC 4). | `PaymentTransactionBL.GetInterfaceList` |
|
||||
| **SEPA-Mandat** (`MandatI3D`) | Einzugsermächtigung des Kunden; bei entsprechender Zahlungskondition Pflichtangabe am Beleg. | `ReceiptBL.CheckIfMandatIsNeeded` |
|
||||
| **Gläubiger-Identifikationsnummer** (`SepaIdentificationNumber`) | Kennung des einziehenden Unternehmens; stammt aus der Bankverbindung des Mandanten. | `PaymentTransactionBL.ExportInvoices` |
|
||||
| **ZUGFeRD / XRechnung** | Formate der strukturierten elektronischen Rechnung. Unterstützt: ZUGFeRD 1.0, 2.0/XRechnung 1.2, 2.1/XRechnung 2.0–2.3.1 und 2.1/XRechnung 3.0.1. Dokumenttyp „380" = Rechnung, „381" = Gutschrift. | `docs/reference/zugferd-field-mapping.md` |
|
||||
| **EDI** (*Electronic Data Interchange*) | Elektronischer Austausch von Bestellungen, Auftragsbestätigungen, Lieferavisen und Rechnungen mit Distributoren; je Lieferant eigenes Format. | `docs/reference/edi/edi-architecture.md` |
|
||||
| **Kontenrahmen** (`AccountSystem`) | Gliederung der Erlös- und Aufwandskonten für die Finanzbuchhaltung. | `src/backend/Centron.BL/Administration/BookKeepingAccountSystems/` |
|
||||
| **Kostenstelle / Kostenträger** (`CostCenter`, `CostObject`) | Getrennte Stammdaten der internen Kostenrechnung; ihre Angabe am Beleg kann jeweils eigenständig erzwungen werden. | `ReceiptBL`, Zeilen 3723-3724 |
|
||||
| **Ausweis ohne Mehrwertsteuer** (`ExclusiveOfVAT`) | Kennzeichen eines Belegs ohne Steuerausweis; im Inland nur bei vorliegender Umsatzsteuer-Identifikationsnummer zulässig. | `ReceiptBL.CheckIfExclusiveOfVatInInland` |
|
||||
|
||||
## I — Technische Begriffe der Codebasis
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **I3D** | Durchgängige Bezeichnung des Primärschlüssels aller Entitäten; wird von `BaseEntity` bereitgestellt. Auch Rechtekennungen heißen `I3D`. | `src/backend/Centron.Entities/BaseEntity.cs` |
|
||||
| **Objektkennung + Objektart** (`ObjectI3D` + `ObjectKind`, `AnlageI3D` + `AnlageArt`) | Durchgängiges Muster für Verweise auf beliebige Geschäftsobjekte. | `docs/reference/receipts/receipts-backend-architecture.md` |
|
||||
| **BL** (`*BL`) | Geschäftslogikklasse; arbeitet auf NHibernate-Entitäten. | `docs/getting-started/general-structure.md` |
|
||||
| **WebServiceBL** (`*WebServiceBL`) | Schicht zwischen Geschäftslogik und Schnittstelle; wandelt Entitäten in Übertragungsobjekte. | ebenda |
|
||||
| **ILogic / BLLogic / WSLogic** | Dreiklang des Client-Datenzugriffs: Schnittstelle, Umsetzung über direkten Datenbankzugriff, Umsetzung über den Webservice. | ebenda, Abschnitt „Dual Implementation Architecture" |
|
||||
| **DTO** | Übertragungsobjekt zwischen Webservice und Oberfläche; verlässt im Gegensatz zur Entität die Geschäftslogikschicht. | `docs/reference/architecture/dtos-and-entities.md` |
|
||||
| **Result / Result\<T\>** | Einheitliches Ergebnisobjekt mit `Status` (`Success`, `Error`, `Warning`), `Message`, `MessageCode` und `Error`. | `docs/reference/architecture/results-and-responses.md` |
|
||||
| **Meldungscode** (`DefaultMessageCodes`) | Maschinenlesbare Fehlerkennung, etwa `LoginFailed`, `RightCheckFailed`, `LicenseMaximumReached`, `TwoFactorAuthFailed`. | `Authenticator`, `LicenseManager` |
|
||||
| **SpecificLogics** | Muster, über das belegartabhängiges Verhalten aus der gemeinsamen Belegverarbeitung heraus aufgerufen wird. | `docs/reference/receipts/receipts-backend-architecture.md` |
|
||||
| **Temporäre Legacy-Entität** | Zweite Entitätsschicht, die die historischen deutschsprachigen Tabellen abbildet; über sie läuft der Speicherpfad der Belege. | ebenda, Abschnitt „Critical Save Warning" |
|
||||
| **Skriptmethode** (`ScriptMethod{Nummer}`) | Nummerierte, versionierte Klasse mit einer Schemamigration; 790 Stück im Bestand. | `docs/reference/database/script-rules.md` |
|
||||
| **Modulcontroller** (`*AppModuleController`) | Klasse, die ein Anwendungsmodul des Windows-Clients beschreibt: Name, Beschreibung, Kategorie, Symbol, Reportgruppe, unterstützte Verbindungsarten und Rechte. | `src/centron/Centron.WPF.UI/Modules/` |
|
||||
| **Verbindungsart** (`CentronConnectionType`) | `SqlServer` (direkte Datenbankverbindung) oder `CentronWebServices` (Verbindung über den Webservice). | `CentronModule.OpenModule` |
|
||||
| **Rückmeldeflagge** (`Show…Dialog`) | Feld im Ergebnisobjekt des Speichervorgangs, über das die Geschäftslogik eine Rückfrage an den Anwender anfordert, ohne die Oberfläche zu kennen. | `ReceiptBL`, `SaveReceiptResultBuilder` |
|
||||
| **Rückfragen unterdrücken** (`IgnoreCallbacks`) | Schalter, der sämtliche Rückfragen für automatisierte Läufe abschaltet. | `ReceiptBL.SaveReceipt` |
|
||||
|
||||
## J — Produkte und Teilsysteme
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **c-entron.NET** | Windows-Client der Suite (WPF, DevExpress). | `src/centron/Centron.WPF.UI/` |
|
||||
| **c-entron Nexus** (auch „c-entron Web") | Blazor-Webportal mit ServiceBoard, Kundenportal und Verwaltung. | `README.md`, `src/nexus/CentronNexus/` |
|
||||
| **ServiceBoard** | Bereich des Webportals für die Ticketbearbeitung durch interne Benutzer. | `src/nexus/CentronNexus/ServiceBoard/` |
|
||||
| **WebCart** | Bereich des Webportals für Kunden: Shop, Warenkorb, Belege, Tickets, Dokumente und Formulare. | `src/nexus/CentronNexus/WebCart/` |
|
||||
| **SelfCare-Formular** | Konfigurierbares Kundenformular mit Zuständen, Auslösern und Folgeaktionen. | `src/backend/Centron.BL/SelfCare/SelfCareBL.cs` |
|
||||
| **c-entron Office** | Werkzeug des Herstellers zur Verwaltung der Lizenzen; der Client bezieht Lizenzen ersatzweise über den Webservice. | `docs/reference/security/licensing-system.md`, `FakeOfficeClient` |
|
||||
| **Riverbird / RiverSuite** | Schwesterprodukt mit geteilten Bausteinen, eigener Auslieferung und eigener Rechteauswahl. | `deployment/riverbird/`, `AppRightsBL.GetRiversuiteRelevantRights` |
|
||||
| **c-entron Delphi** | Vorgängergeneration des Produkts mit eigenem Versionsschema (9.3.x.y), die sich Lizenz und Datenbank mit c-entron.NET teilt. | `LicenseManager.TryFixCentronDelphiVersionNumber` |
|
||||
| **DocuBoard / Asset Management** | Bereich zur Erfassung von IT-Beständen beim Kunden (Systeme, Ordnerberechtigungen, Verzeichnisbenutzer, SNMP-Geräte). | `src/backend/Centron.BL/DocuBoard/` |
|
||||
+436
@@ -0,0 +1,436 @@
|
||||
# Hypothesen — offene Punkte der Reverse-Requirements-Analyse
|
||||
|
||||
**System:** NEXOWARE c-entron ERP-Suite
|
||||
**Erhebungsart:** rein statische Analyse ohne Ausführung des Systems und ohne Rückfrage bei Fachexperten
|
||||
|
||||
## 1. Inhalt und Abgrenzung dieser Datei
|
||||
|
||||
Diese Datei enthält **genau** die Anforderungen, die in `StRS.md`, `SyRS.md` oder `SwRS.md` mit `Status: HYPOTHESE` geführt und in der Aussage mit `[HYPOTHESE]` markiert sind — keine zusätzlichen freien Fragen. Offene Punkte ohne zugehörige Anforderung stehen in der Selbstbewertung des `Analysebericht.md`.
|
||||
|
||||
Eine Hypothese bedeutet hier **nicht**, dass die technische Beobachtung unbelegt wäre: Jede aufgeführte Anforderung führt mindestens einen `PRIMÄR`-Beleg. Als Hypothese gekennzeichnet ist jeweils der **fachliche Schluss**, der aus der Beobachtung gezogen wird — insbesondere dort, wo aus dem Fehlen einer Codestelle auf das Fehlen einer Funktion geschlossen wird. Ein solcher Negativbefund ist statisch nicht abschließend beweisbar und daher grundsätzlich als Hypothese geführt.
|
||||
|
||||
**Anzahl:** 33 von 434 Anforderungen (7.6%)
|
||||
|
||||
| Ebene | Hypothesen |
|
||||
|---|---|
|
||||
| StRS | 5 |
|
||||
| SyRS | 17 |
|
||||
| SwRS | 11 |
|
||||
|
||||
## 2. Übersicht
|
||||
|
||||
| ID | Titel | Offene Frage in einem Satz |
|
||||
|---|---|---|
|
||||
| StRS-096 | Verträge verlängern sich automatisch | Ob und wo diese Verlängerung ausgelöst wird, ist nicht belegbar |
|
||||
| StRS-097 | Verträge werden gegen eine Überwachungsschwelle geprüft | Ob eine solche Prüfung stattfindet, ist nicht belegbar |
|
||||
| StRS-098 | Kennwörter müssen nach einer festgelegten Frist gewechselt werden | Eine solche Durchsetzung ist im analysierten Code nicht auffindbar |
|
||||
| StRS-099 | Gutscheine werden als eigener Geschäftsgegenstand geführt | Ob die Funktion für Anwender erreichbar ist, ist nicht belegbar |
|
||||
| StRS-100 | Kunden-IT-Bestände werden über ein Asset Management erfasst | Der fachliche Zweck und die Erreichbarkeit dieser Funktion sind nicht abschließend belegbar |
|
||||
| SyRS-039 | Fehlgeschlagene Anmeldungen werden protokolliert, sperren das Konto aber nicht | Eine automatische Kontosperre nach einer festgelegten Zahl von Fehlversuchen findet nicht statt |
|
||||
| SyRS-190 | Belegnummern sind systemweit eindeutig | Ob die Eindeutigkeit bei gleichzeitiger Vergabe gewahrt bleibt, ist nicht belegbar |
|
||||
| SyRS-191 | Referentielle Integrität wird in der Datenhaltung erzwungen | Ob dies bei nur 134 Fremdschlüsseln auf 1.535 Tabellen gewährleistet ist, ist nicht belegbar |
|
||||
| SyRS-192 | Belegzustandsübergänge unterliegen einer Übergangsprüfung | Eine abschließende Übergangsprüfung ist nicht auffindbar |
|
||||
| SyRS-193 | Die Datenbankverbindung wird verschlüsselt hinterlegt | Ob der Klartextweg im Kundenbetrieb verwendet wird, ist aus der Codebasis nicht ableitbar |
|
||||
| SyRS-194 | Die Verbindung zum Webservice ist transportverschlüsselt | Ob dies im Betrieb geschieht, ist aus der Codebasis nicht ableitbar |
|
||||
| SyRS-195 | Für personenbezogene Daten bestehen Aufbewahrungsfristen | Hinterlegte Fristen sind nicht auffindbar |
|
||||
| SyRS-196 | Für Antwortzeiten bestehen messbare Vorgaben | Zielwerte sind in der Codebasis nicht hinterlegt |
|
||||
| SyRS-197 | Für Verfügbarkeit und Datensicherung bestehen Vorgaben | Solche Vorgaben sind in der Codebasis nicht hinterlegt |
|
||||
| SyRS-198 | Die Oberfläche erfüllt Anforderungen an Barrierefreiheit | Entsprechende Vorgaben sind in der Codebasis nicht auffindbar |
|
||||
| SyRS-199 | Mandantendaten sind auf Datenebene voneinander getrennt | Eine durchgängige mandantenbezogene Filterung ist nicht auffindbar |
|
||||
| SyRS-200 | Rechteänderungen wirken ohne neue Anmeldung | Eine Ungültigmachung des Rechtezwischenspeichers nach einer Rechteänderung ist nicht auffindbar |
|
||||
| SyRS-201 | Das Riverbird-Produkt teilt sich Bestandteile mit c-entron | Die Abgrenzung beider Produkte und der Umfang der geteilten Bestandteile sind aus der Codebasis nicht abschließend erschließbar |
|
||||
| SyRS-202 | Der Concerto-Baustein bedient einen Bestellformatstandard | Der fachliche Zweck, der Partner und die Verwendung dieses Formats sind aus der Codebasis nicht erschließbar |
|
||||
| SyRS-203 | Der IT-Planer strukturiert Prüfobjekte für Checklisten | Der fachliche Zweck des Bereichs „ItPlanner" ist aus der Codebasis nicht erschließbar |
|
||||
| SyRS-204 | Die docuFORM-Anbindung liefert Gerätezählerstände | Der genaue Umfang der übernommenen Daten ist aus der Codebasis nicht abschließend erschließbar |
|
||||
| SyRS-205 | Zeitangaben werden einheitlich in einer Zeitzone geführt | Die durchgängige Verwendung der Ortszeit ohne Zeitzonenangabe ist belegt |
|
||||
| SwRS-190 | Zeitstempel werden zeitzonensicher gebildet | Da weder Anwendungscode noch Datenmodell einen Zeitzonenanteil führen, ist die Eindeutigkeit nur bei einheitlicher Serverzeitzone gegeben |
|
||||
| SwRS-191 | Die Nummernvergabe ist gegen gleichzeitige Zugriffe gesichert | Ein Sicherungsmechanismus ist nicht auffindbar |
|
||||
| SwRS-192 | Die als unsicher geltende Binärserialisierung wird nur für einen Zweck genutzt | Die Beschränkung auf diesen Zweck beruht ausschließlich auf einem Kommentar |
|
||||
| SwRS-193 | Die automatisierte Prüfung deckt die Fachlogik ausreichend ab | Der erreichte Abdeckungsgrad ist ohne Ausführung der Prüfungen nicht feststellbar |
|
||||
| SwRS-194 | Alle Projekte liegen unterhalb des Quellverzeichnisses | Mindestens ein Projekt weicht davon ab |
|
||||
| SwRS-195 | Fremdbestandteile werden ausschließlich über Paketverwaltung bezogen | Herkunft, Lizenzstand und Aktualität der lokal abgelegten Pakete und Binärbestandteile sind aus der Codebasis nicht feststellbar |
|
||||
| SwRS-196 | Das Delphi-Vorgängersystem greift auf dieselbe Datenbank zu | Ob das Vorgängersystem noch produktiv betrieben wird und welche Bereiche es schreibt, ist aus der Codebasis nicht feststellbar |
|
||||
| SwRS-197 | Statische Zwischenspeicher sind für den Mehrmandantenbetrieb geeignet | Ob die statischen Zustände im Mehrmandantenbetrieb unbedenklich sind, ist ohne Ausführung nicht feststellbar |
|
||||
| SwRS-198 | Die zweite Steuerelementbibliothek dient der Produktvorschau | Der Zusammenhang zwischen `Centron.Controls.Preview` und `LicenseGuids.ProductPreview` ist nicht belegbar |
|
||||
| SwRS-199 | Migrationsskripte enthalten keine fachlichen Regeln | Mindestens die Steuersatzumrechnung liegt sowohl in Skripten als auch in der Geschäftslogik vor |
|
||||
| SwRS-200 | Die Anbindung fremder Ticketsysteme ist produktiv nutzbar | Ob und wie eine solche Anbindung konfiguriert wird, ist nicht belegbar |
|
||||
|
||||
## 3. Einzelaufstellung
|
||||
|
||||
### StRS-096 — Verträge verlängern sich automatisch
|
||||
|
||||
- **Ebene / Typ:** StRS / funktional (Akteur: Buchhalter, Vertriebsmitarbeiter)
|
||||
- **Akteur:** Buchhalter, Vertriebsmitarbeiter
|
||||
- **Belegte Beobachtung (Fakt):** Das Merkmal `AutomatedProlongation` ist an vier Stellen modelliert (`IReceiptWithContractInformation`, `IContractHead`, `ReceiptContract`, `AccountContract`), über `ReceiptContractHeadMaps`/`ReceiptContractBaseMaps` auf die Spalte `AutomatedProlongation` abgebildet, über `SaveReceiptContractRepository.cs` Zeile 292 in die Legacy-Spalte `AutoVerlaengerung` geschrieben und in `AccountContract.cs` Zeile 124 aus der Vertragsart vorbelegt. Eine Stelle, die bei Ablauf eines Vertrags anhand dieses Merkmals das Vertragsende fortschreibt, ist in der analysierten Codebasis nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Verträge mit gesetztem Verlängerungsmerkmal bei Erreichen des Vertragsendes automatisch um eine weitere Laufzeitperiode verlängern.
|
||||
- **Offene Frage / fehlende Information:** Ob und wo diese Verlängerung ausgelöst wird, ist nicht belegbar; zur Bestätigung fehlt eine auswertende Stelle für `AutomatedProlongation` außerhalb von Speichern, Abbilden und Vorbelegen.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, KONTEXT; erster PRIMÄR-Beleg: `src/backend/Centron.DAO/Repositories/Sales/Receipts/ContractList/SaveReceiptContractRepository.cs`, Zeile 292 (`receiptTable.AutoVerlaengerung = receipt.AutomatedProlongation ? 1 : 0;`)
|
||||
- **Klärung durch:** Einen Vertrag mit gesetztem Merkmal und Vertragsende in der Vergangenheit anlegen und den Abrechnungslauf ausführen; das Verhalten des Systems belegt oder widerlegt die automatische Verlängerung.
|
||||
- **Übernahmewürdigkeit:** übernehmen — automatische Verlängerung ist bei Dauerschuldverhältnissen fachlich erforderlich, unabhängig davon, ob sie derzeit ausgeführt wird.
|
||||
|
||||
### StRS-097 — Verträge werden gegen eine Überwachungsschwelle geprüft
|
||||
|
||||
- **Ebene / Typ:** StRS / funktional (Akteur: Servicetechniker, Buchhalter)
|
||||
- **Akteur:** Servicetechniker, Buchhalter
|
||||
- **Belegte Beobachtung (Fakt):** `ReceiptContract` führt `IsMonitoring` und `MonitoringValue` (Zeilen 144-145); beide sind über `ReceiptContractBaseMaps` abgebildet, über `SaveReceiptContractRepository` Zeilen 415-416 persistiert und über `ReceiptLogBL.CreateIsMonitoringEntry` bzw. `CreateMonitoringValueEntry` bei Änderung protokolliert. Eine Stelle, die den Schwellwert gegen einen Ist-Wert prüft und daraus eine Meldung erzeugt, ist nicht auffindbar; die einzige Auswertung in `ReceiptBL` (Zeilen 10477-10478) vergleicht lediglich alten und neuen Feldwert für das Protokoll.
|
||||
- **Angenommene Soll-Aussage:** Das System soll bei Erreichen des je Vertrag gesetzten Überwachungswerts eine Meldung erzeugen.
|
||||
- **Offene Frage / fehlende Information:** Ob eine solche Prüfung stattfindet, ist nicht belegbar; zur Bestätigung fehlt eine Stelle, die `MonitoringValue` mit einem Ist-Wert vergleicht.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, SEKUNDÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 10477-10478
|
||||
- **Klärung durch:** Einen Vertrag mit Überwachungswert anlegen, den Wert im laufenden Betrieb überschreiten und prüfen, ob eine Meldung entsteht.
|
||||
- **Übernahmewürdigkeit:** übernehmen — Schwellwertüberwachung ist bei Managed-Service-Verträgen fachlich erforderlich.
|
||||
|
||||
### StRS-098 — Kennwörter müssen nach einer festgelegten Frist gewechselt werden
|
||||
|
||||
- **Ebene / Typ:** StRS / Sicherheit (Akteur: alle internen Benutzer)
|
||||
- **Akteur:** alle internen Benutzer
|
||||
- **Belegte Beobachtung (Fakt):** `AppUser` führt `PasswordValidDurationDays` (Spalte `KennAendNachTagen`) und `LastPasswordChangedDate` (Spalte `LetzKennAend`); beide sind in `AppUserMaps` abgebildet, werden in `UsersBL.UpdatePassword` fortgeschrieben (`user2.LastPasswordChangedDate = DateTime.Now;`), in `AppUserBL` auf einen Ausgangswert gesetzt (`new DateTime(1899, 12, 30)`) und im Buchhaltungsaustausch übertragen. Der Anmeldepfad (`Authenticator.ValidateAppUser`) wertet keines der beiden Felder aus; `UsersBL.IsValidAppUserPassword` prüft ausschließlich die Mindestlänge.
|
||||
- **Angenommene Soll-Aussage:** Das System soll eine Anmeldung nach Ablauf der hinterlegten Kennwortgültigkeitsdauer nur nach einem Kennwortwechsel zulassen.
|
||||
- **Offene Frage / fehlende Information:** Eine solche Durchsetzung ist im analysierten Code nicht auffindbar; zur Bestätigung fehlt eine Auswertung von `PasswordValidDurationDays` und `LastPasswordChangedDate` im Anmeldepfad.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/Logins/UsersBL.cs`, Zeilen 123-129
|
||||
- **Klärung durch:** Bei einem Benutzer `KennAendNachTagen` auf 1 und `LetzKennAend` auf ein Datum vor mehr als einem Tag setzen und anmelden; gelingt die Anmeldung ohne Wechselaufforderung, ist die Hypothese bestätigt.
|
||||
- **Übernahmewürdigkeit:** übernehmen — eine Kennwortrichtlinie mit Wechselfrist ist im Zielsystem zu führen; das Datenmodell sieht sie bereits vor.
|
||||
|
||||
### StRS-099 — Gutscheine werden als eigener Geschäftsgegenstand geführt
|
||||
|
||||
- **Ebene / Typ:** StRS / funktional (Akteur: Vertriebsmitarbeiter)
|
||||
- **Akteur:** Vertriebsmitarbeiter
|
||||
- **Belegte Beobachtung (Fakt):** `src/backend/Centron.BL/VoucherManagement/VoucherManagementBL.cs` (`public class VoucherManagementBL : BaseBL`) und `src/backend/Centron.Entities/Entities/VoucherManagement/` bestehen als eigene Bereiche. Ein zugehöriges Anwendungsmodul, eine Einstellungsseite oder eine API-Ressource ist in `ModuleRegistration`, `GetSettingsWithoutModule()` und den v1-Controllern nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Gutscheine ausgeben, einlösen und ihren Stand verwalten.
|
||||
- **Offene Frage / fehlende Information:** Ob die Funktion für Anwender erreichbar ist, ist nicht belegbar; zur Bestätigung fehlt ein Modul, eine Einstellungsseite oder eine Schnittstelle, die `VoucherManagementBL` aufruft.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/VoucherManagement/VoucherManagementBL.cs`
|
||||
- **Klärung durch:** Die Aufrufer von `VoucherManagementBL` ermitteln; fehlen sie außerhalb von Tests, ist die Funktion nicht erreichbar.
|
||||
- **Übernahmewürdigkeit:** übernehmen — Gutscheine sind ein gängiges Vertriebsinstrument; der Reifegrad der vorliegenden Umsetzung ist fachlich zu klären.
|
||||
|
||||
### StRS-100 — Kunden-IT-Bestände werden über ein Asset Management erfasst
|
||||
|
||||
- **Ebene / Typ:** StRS / funktional (Akteur: Servicetechniker)
|
||||
- **Akteur:** Servicetechniker
|
||||
- **Belegte Beobachtung (Fakt):** `src/backend/Centron.BL/DocuBoard/` enthält `AssetManagementADSystemUserExclusionBL`, `AssetManagementArticleAssignmentBL` und `AssetManagementPartnerBL`; die zugehörigen Entitäten liegen in `Entities/DocuBoard/` (`AssetManagementPartner`, `AssetManagementPartnerItem`, `AssetManagementADSystemUserExclusion`, `AssetManagementArticleAssignment`). Das Datenbankschema führt weitere Tabellen desselben Namensraums (`AssetManagementCheckResultsHistory`, `AssetManagementFolderPermissions`, `AssetManagementSNMPOidClasses`). Ein zugehöriges Anwendungsmodul ist in `ModuleRegistration` nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll IT-Bestände beim Kunden — Systeme, Ordnerberechtigungen, Verzeichnisbenutzer und über SNMP erreichbare Geräte — erfassen und einem Partner zuordnen.
|
||||
- **Offene Frage / fehlende Information:** Der fachliche Zweck und die Erreichbarkeit dieser Funktion sind nicht abschließend belegbar; zur Bestätigung fehlen eine Modulanbindung und eine Beschreibung des Bereichs „DocuBoard".
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/DocuBoard/AssetManagementPartnerBL.cs`, `AssetManagementArticleAssignmentBL.cs`, `AssetManagementADSystemUserExclusionBL.cs`
|
||||
- **Klärung durch:** Die Aufrufer der drei Bausteine ermitteln und die Herkunft der Daten in den Tabellen prüfen.
|
||||
- **Übernahmewürdigkeit:** übernehmen — Bestandserfassung beim Kunden ist Grundlage des Managed-Service-Geschäfts; die Zusammenführung mit Stammblatt und Gerät ist zwingend.
|
||||
|
||||
### SyRS-039 — Fehlgeschlagene Anmeldungen werden protokolliert, sperren das Konto aber nicht
|
||||
|
||||
- **Ebene / Typ:** SyRS / Sicherheit (Akteur: Komponente `Authenticator`)
|
||||
- **Akteur:** Komponente `Authenticator`
|
||||
- **Belegte Beobachtung (Fakt):** `BasicAuthenticator` protokolliert bei Misserfolg `Logger.Warn("Basic authentication failed for user: {UserName}. Context: {AuthObject}", ...)`, wobei `AuthObject.ToString()` Anfrage-Kennung, Anwendungsversion, Anwendungsname, Gerätename und IP-Adresse enthält. Die Tabelle `Sichbenu` führt eine Spalte `AnmeldungFehlgeschlagen`, die in `AppUserMaps` auf die Eigenschaft `AuthenticationFailed` abgebildet ist. Eine Auswertung dieser Eigenschaft zur Kontosperre nach mehreren Fehlversuchen ist in der analysierten Codebasis nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll fehlgeschlagene Anmeldeversuche mit Kontextangaben protokollieren.
|
||||
- **Offene Frage / fehlende Information:** Eine automatische Kontosperre nach einer festgelegten Zahl von Fehlversuchen findet nicht statt; zur Bestätigung fehlt eine Auswertung der Spalte `AnmeldungFehlgeschlagen` außerhalb von Zuordnung und Datenübernahme.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, SEKUNDÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs`, Zeile 55
|
||||
- **Klärung durch:** Zehnmal mit falschem Kennwort anmelden und anschließend mit korrektem Kennwort; die Anmeldung muss gelingen — das belegt das Fehlen einer Sperre.
|
||||
- **Übernahmewürdigkeit:** übernehmen — die Protokollierung ist beizubehalten; eine Sperre oder Verzögerung nach Fehlversuchen ist im Zielsystem zu ergänzen.
|
||||
|
||||
### SyRS-190 — Belegnummern sind systemweit eindeutig
|
||||
|
||||
- **Ebene / Typ:** SyRS / Daten (Akteur: Datenbank, Komponente `NumberGroupBL`)
|
||||
- **Akteur:** Datenbank, Komponente `NumberGroupBL`
|
||||
- **Belegte Beobachtung (Fakt):** `dbo.RechKopf` führt `[Nummer] [int] NOT NULL` ohne Eindeutigkeitsbedingung; im gesamten Schema bestehen nur 21 `UNIQUE NONCLUSTERED`-Bedingungen (unter anderem `IX_AccountCustomers_UniqueNumber`, `IX_AccountSuppliers_UniqueNumber`), keine davon auf einer Belegnummernspalte. Die Eindeutigkeit wird ausschließlich durch `NumberGroupBL.GetNextNumber` in der Anwendung hergestellt.
|
||||
- **Angenommene Soll-Aussage:** Das System soll die Eindeutigkeit von Belegnummern je Nummernkreis sicherstellen.
|
||||
- **Offene Frage / fehlende Information:** Ob die Eindeutigkeit bei gleichzeitiger Vergabe gewahrt bleibt, ist nicht belegbar; zur Bestätigung fehlt entweder eine Eindeutigkeitsbedingung in der Datenbank oder eine nachweisbare Sperre in `NumberGroupBL`.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `SSMS_DB_SCHEMA.sql`, `dbo.RechKopf`, Zeile 3233 (`[Nummer] [int] NOT NULL`)
|
||||
- **Klärung durch:** Zwei Belege derselben Art gleichzeitig aus zwei Sitzungen anlegen; erhalten beide dieselbe Nummer, ist die Hypothese bestätigt.
|
||||
- **Übernahmewürdigkeit:** übernehmen — die Eindeutigkeit ist handelsrechtlich gefordert und im Zielsystem zusätzlich in der Datenhaltung abzusichern.
|
||||
|
||||
### SyRS-191 — Referentielle Integrität wird in der Datenhaltung erzwungen
|
||||
|
||||
- **Ebene / Typ:** SyRS / Daten (Akteur: Datenbank)
|
||||
- **Akteur:** Datenbank
|
||||
- **Belegte Beobachtung (Fakt):** Das Schema enthält 1.535 Tabellen, aber nur 134 `FOREIGN KEY`-Klauseln. Die Beziehungen werden überwiegend über Kennungsfelder ohne Fremdschlüsselbedingung abgebildet (`KundenI3D`, `ArtikelI3D`, `VertragKopfI3D`, `HeadI3D`); das durchgängige Muster „Objektkennung + Objektart" (`AnlageI3D` + `AnlageArt`) lässt sich technisch ohnehin nicht als Fremdschlüssel abbilden.
|
||||
- **Angenommene Soll-Aussage:** Das System soll die Beziehungen zwischen Geschäftsobjekten widerspruchsfrei halten.
|
||||
- **Offene Frage / fehlende Information:** Ob dies bei nur 134 Fremdschlüsseln auf 1.535 Tabellen gewährleistet ist, ist nicht belegbar; zur Bestätigung fehlt eine Prüfung, welche Beziehungen ausschließlich anwendungsseitig gesichert sind.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, KONTEXT; erster PRIMÄR-Beleg: `SSMS_DB_SCHEMA.sql`, 1.535 `CREATE TABLE` gegenüber 134 `FOREIGN KEY`
|
||||
- **Klärung durch:** Einen Beleg löschen und die verweisenden Protokolleinträge prüfen; verbleiben verwaiste Verweise, ist die Hypothese bestätigt.
|
||||
- **Übernahmewürdigkeit:** übernehmen — im Zielsystem ist die referentielle Integrität in der Datenhaltung abzusichern, soweit das Objektartmuster durch echte Beziehungen ersetzt wird.
|
||||
|
||||
### SyRS-192 — Belegzustandsübergänge unterliegen einer Übergangsprüfung
|
||||
|
||||
- **Ebene / Typ:** SyRS / funktional (Akteur: Komponente `ReceiptBL`)
|
||||
- **Akteur:** Komponente `ReceiptBL`
|
||||
- **Belegte Beobachtung (Fakt):** `ReceiptState` kennt drei Zustände. `ReceiptBL` setzt den Zustand an mindestens einer Stelle unmittelbar (`receipt.State = ReceiptState.Completed;` in `UpdateReceiptStateFromPaymentCondition`) und ruft `CheckCloseReceipt(receipt, data, result)` im Prüfblock. Eine Stelle, die zulässige Übergänge zwischen den drei Zuständen abschließend festlegt — etwa eine Übergangstabelle oder eine Prüfung „von-nach" —, ist nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll unzulässige Zustandsübergänge eines Belegs verhindern, etwa den Wechsel von „storniert" zurück nach „offen".
|
||||
- **Offene Frage / fehlende Information:** Eine abschließende Übergangsprüfung ist nicht auffindbar; zur Bestätigung fehlt eine Stelle, die Ausgangs- und Zielzustand gemeinsam auswertet.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 8355 (`receipt.State = ReceiptState.Completed;`)
|
||||
- **Klärung durch:** Einen stornierten Beleg auf „offen" setzen und speichern; gelingt dies, ist die Hypothese bestätigt.
|
||||
- **Übernahmewürdigkeit:** übernehmen — eine ausdrückliche Zustandsmaschine ist im Zielsystem vorzusehen.
|
||||
|
||||
### SyRS-193 — Die Datenbankverbindung wird verschlüsselt hinterlegt
|
||||
|
||||
- **Ebene / Typ:** SyRS / Sicherheit (Akteur: Systembetreiber)
|
||||
- **Akteur:** Systembetreiber
|
||||
- **Belegte Beobachtung (Fakt):** `WebServiceConfigSerializer` liest zunächst `DatabaseConnectionString` als verschlüsselten Wert (`GetEncryptedValue(...)`) und greift nur bei leerem Ergebnis auf `DatabaseConnectionStringPlain` zurück (Zeilen 41-44); beim Schreiben wird stets verschlüsselt (`new AESCryptoLogic().EncryptText(config?.DatabaseConnectionString)`, Zeile 163). Die mitgelieferte Betriebskonfiguration `docker/compose/WebServiceConfig.xml` lässt `DatabaseConnectionString` leer und trägt die Verbindung im Klartext in `DatabaseConnectionStringPlain` ein, einschließlich Kennwort.
|
||||
- **Angenommene Soll-Aussage:** Das System soll die Datenbankverbindung verschlüsselt hinterlegen; der Klartextweg besteht als Rückfallmöglichkeit fort und wird in der mitgelieferten Betriebskonfiguration genutzt.
|
||||
- **Offene Frage / fehlende Information:** Ob der Klartextweg im Kundenbetrieb verwendet wird, ist aus der Codebasis nicht ableitbar; zur Bestätigung fehlt Einblick in ausgelieferte Konfigurationen.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/WebServiceConfiguration/WebServiceConfigSerializer.cs`, Zeilen 41-44 und 163
|
||||
- **Klärung durch:** Eine Konfiguration über die Anwendung schreiben lassen und die Datei prüfen; `DatabaseConnectionString` muss verschlüsselt gefüllt und `DatabaseConnectionStringPlain` leer sein.
|
||||
- **Übernahmewürdigkeit:** Workaround — der Klartextweg ist im Zielsystem zu entfernen und durch ein Geheimnisverwaltungsverfahren zu ersetzen.
|
||||
|
||||
### SyRS-194 — Die Verbindung zum Webservice ist transportverschlüsselt
|
||||
|
||||
- **Ebene / Typ:** SyRS / Sicherheit (Akteur: Systembetreiber)
|
||||
- **Akteur:** Systembetreiber
|
||||
- **Belegte Beobachtung (Fakt):** `WebServiceConfig` führt `WebServiceCertificateFilePath` und `WebServiceCertificatePassword`; `CentronHost.cs` Zeile 136 verwendet den Pfad beim Aufbau des Hosts. Das Portal lädt sein Zertifikat über `X509CertificateLoader.LoadPkcs12FromFile(hostConfig.LinuxCertificatePath, hostConfig.LinuxCertificatePassword)`. In den mitgelieferten Konfigurationen sind beide Zertifikatsangaben leer, und die Adressen lauten `http://localhost:1234/CentronService` beziehungsweise `http://localhost:8050`.
|
||||
- **Angenommene Soll-Aussage:** Das System soll die Verbindung zwischen Client, Portal und Webservice transportverschlüsseln.
|
||||
- **Offene Frage / fehlende Information:** Ob dies im Betrieb geschieht, ist aus der Codebasis nicht ableitbar; die mitgelieferten Konfigurationen verwenden unverschlüsselte Verbindungen, was für eine Entwicklungsumgebung erwartbar ist.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/nexus/CentronNexus.Host/Program.cs`, Zeile 145
|
||||
- **Klärung durch:** Ein Zertifikat hinterlegen und die Erreichbarkeit über `https` prüfen; zusätzlich prüfen, ob der unverschlüsselte Zugang dann abgeschaltet ist.
|
||||
- **Übernahmewürdigkeit:** übernehmen — Transportverschlüsselung ist im SaaS-Zielsystem verpflichtend und darf nicht abschaltbar sein.
|
||||
|
||||
### SyRS-195 — Für personenbezogene Daten bestehen Aufbewahrungsfristen
|
||||
|
||||
- **Ebene / Typ:** SyRS / Sicherheit (Akteur: Administrator, Datenschutzbeauftragter)
|
||||
- **Akteur:** Administrator, Datenschutzbeauftragter
|
||||
- **Belegte Beobachtung (Fakt):** `DataSecurityBL.GetDataSecurityCleanUpStats(AppUser currentUser, DataSecurityCleanUpStatsFilter filter)` nimmt einen Filter entgegen, dessen Aufbau die Abgrenzung der zu bereinigenden Daten bestimmt; die Bereinigung wird ausschließlich manuell über `DataSecurityExecuteCleanUp` ausgelöst. Eine hinterlegte Aufbewahrungsfrist je Datenart oder eine automatische Bereinigung nach Fristablauf ist nicht auffindbar; der Datenqualitätsdienst führt laut Dokumentation Aufräumarbeiten aus, ohne dass Fristen benannt sind.
|
||||
- **Angenommene Soll-Aussage:** Das System soll personenbezogene Daten nach Ablauf einer je Datenart festgelegten Aufbewahrungsfrist selbsttätig löschen oder zur Löschung vorschlagen.
|
||||
- **Offene Frage / fehlende Information:** Hinterlegte Fristen sind nicht auffindbar; zur Bestätigung fehlt eine Konfigurationsstelle für Aufbewahrungsfristen.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, KONTEXT; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, Zeilen 34-63
|
||||
- **Klärung durch:** Die Einstellungsliste nach einer Fristkonfiguration durchsuchen; fehlt sie, ist die Hypothese bestätigt.
|
||||
- **Übernahmewürdigkeit:** übernehmen — Löschfristen sind datenschutzrechtlich gefordert und im Zielsystem konfigurierbar vorzusehen.
|
||||
|
||||
### SyRS-196 — Für Antwortzeiten bestehen messbare Vorgaben
|
||||
|
||||
- **Ebene / Typ:** SyRS / nicht-funktional (Zeitverhalten (ISO/IEC 25010, Performance-Effizienz))
|
||||
- **Akteur:** alle Benutzer
|
||||
- **Belegte Beobachtung (Fakt):** Leistungsbezogene Vorkehrungen sind an mehreren Stellen belegt: Sitzungszwischenspeicher für Rechte, `ConditionalWeakTable` für Belegzusatzdaten, Sammelabfragen für Bestände, Ticketzwischenspeicher im Portal mit den Grenzwerten `CachedMonths` und `MaxClosedTickets`, `UseIncreasedThreadPool` in der Webservice-Konfiguration und ein eigener Bereich `Administration/PerformanceTests/`. Eine Festlegung von Zielwerten — etwa eine höchstzulässige Antwortzeit für eine Belegsuche — ist nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll für die häufigsten Vorgänge messbare Antwortzeitvorgaben einhalten.
|
||||
- **Offene Frage / fehlende Information:** Zielwerte sind in der Codebasis nicht hinterlegt; zur Bestätigung fehlt eine Leistungsvorgabe, gegen die die vorhandenen Prüfungen messen.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `docker/compose/WebServiceConfig.xml`, `<UseIncreasedThreadPool>true</UseIncreasedThreadPool>`
|
||||
- **Klärung durch:** Die Codebasis nach hinterlegten Zeitgrenzen für Benutzervorgänge durchsuchen; werden keine gefunden, ist die Hypothese bestätigt.
|
||||
- **Übernahmewürdigkeit:** übernehmen — für ein SaaS-Zielsystem sind Antwortzeitvorgaben Bestandteil der Leistungszusage.
|
||||
|
||||
### SyRS-197 — Für Verfügbarkeit und Datensicherung bestehen Vorgaben
|
||||
|
||||
- **Ebene / Typ:** SyRS / nicht-funktional (Verfügbarkeit (ISO/IEC 25010, Zuverlässigkeit))
|
||||
- **Akteur:** Systembetreiber
|
||||
- **Belegte Beobachtung (Fakt):** Die Container-Zusammenstellung setzt für Webservice und Portal `restart: on-failure`; die Datenbank wird als Container ohne dauerhaftes Datenvolumen geführt (`compose.yaml`, Dienst `db` ohne `volumes`). Eine Vorgabe zu Wiederherstellungszeit, Wiederherstellungspunkt oder Sicherungshäufigkeit ist nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Vorgaben zu Verfügbarkeit, Wiederherstellungszeit und Datensicherung erfüllen.
|
||||
- **Offene Frage / fehlende Information:** Solche Vorgaben sind in der Codebasis nicht hinterlegt; zur Bestätigung fehlen Betriebsunterlagen außerhalb des Quellcodes.
|
||||
- **Belegsituation:** 1 Belege — PRIMÄR; erster PRIMÄR-Beleg: `docker/compose/compose.yaml`, `restart: on-failure` bei `webservice` und `nexus`, Dienst `db` ohne Volumenangabe
|
||||
- **Klärung durch:** Die Betriebsunterlagen auf Verfügbarkeits- und Sicherungsvorgaben prüfen; sie liegen außerhalb der Codebasis.
|
||||
- **Übernahmewürdigkeit:** übernehmen — Verfügbarkeits- und Sicherungszusagen sind im SaaS-Zielsystem Vertragsbestandteil.
|
||||
|
||||
### SyRS-198 — Die Oberfläche erfüllt Anforderungen an Barrierefreiheit
|
||||
|
||||
- **Ebene / Typ:** SyRS / nicht-funktional (Zugänglichkeit (ISO/IEC 25010, Benutzbarkeit))
|
||||
- **Akteur:** alle Benutzer
|
||||
- **Belegte Beobachtung (Fakt):** Die Portaloberfläche setzt auf Bootstrap-Variablen (`README.md`, Abschnitt „3. Custom CSS") und DevExpress-Komponenten (Abschnitt „2. Which components to use"); `Branding` erlaubt die Festlegung einer Akzentfarbe (`HexColor`) und getrennter Anmeldelogos für helle und dunkle Darstellung (`LoginLogo`, `LoginLogoDarkMode`). Vorgaben zu Kontrastwerten, Tastaturbedienung oder Bildschirmleserunterstützung sind nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll für die Bedienung ohne Maus und mit Hilfsmitteln geeignet sein.
|
||||
- **Offene Frage / fehlende Information:** Entsprechende Vorgaben sind in der Codebasis nicht auffindbar; zur Bestätigung fehlen Gestaltungsvorgaben zur Zugänglichkeit.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `README.md`, Abschnitte „2. Which components to use" und „3. Custom CSS"
|
||||
- **Klärung durch:** Eine Portalseite mit einem Prüfwerkzeug für Zugänglichkeit prüfen; das Ergebnis zeigt den tatsächlichen Stand.
|
||||
- **Übernahmewürdigkeit:** übernehmen — Zugänglichkeit ist bei öffentlichen Auftraggebern gefordert und im Zielsystem festzulegen.
|
||||
|
||||
### SyRS-199 — Mandantendaten sind auf Datenebene voneinander getrennt
|
||||
|
||||
- **Ebene / Typ:** SyRS / Sicherheit (Akteur: Systembetreiber)
|
||||
- **Akteur:** Systembetreiber
|
||||
- **Belegte Beobachtung (Fakt):** Der Mandant ist als Feld modelliert (`Sichbenu.MandantID`, `MandatorBL.GetMandatorI3DFromEmployee`, `MandatorManagementAppModuleController`); die Trennung erfolgt damit innerhalb einer Datenbank über Kennungsfelder. Eine durchgängige Filterung aller Abfragen nach Mandant — etwa über einen Filter auf Sitzungsebene — ist nicht auffindbar; die Rechteprüfungen filtern nach Filiale (`BranchI3D`), nicht nach Mandant.
|
||||
- **Angenommene Soll-Aussage:** Das System soll sicherstellen, dass ein Benutzer ausschließlich Daten seines Mandanten sieht.
|
||||
- **Offene Frage / fehlende Information:** Eine durchgängige mandantenbezogene Filterung ist nicht auffindbar; zur Bestätigung fehlt ein Mechanismus, der die Mandantenbedingung auf alle Abfragen anwendet.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `SSMS_DB_SCHEMA.sql`, `dbo.Sichbenu`, Spalte `[MandantID] [int] NULL` (Zeile 18515)
|
||||
- **Klärung durch:** Zwei Mandanten anlegen und mit einem Benutzer des einen Mandanten eine Belegsuche ausführen; erscheinen Belege des anderen Mandanten, ist die Hypothese bestätigt.
|
||||
- **Übernahmewürdigkeit:** übernehmen — im SaaS-Zielsystem ist die Mandantentrennung auf Datenebene zwingend durchzusetzen.
|
||||
|
||||
### SyRS-200 — Rechteänderungen wirken ohne neue Anmeldung
|
||||
|
||||
- **Ebene / Typ:** SyRS / Sicherheit (Akteur: Administrator)
|
||||
- **Akteur:** Administrator
|
||||
- **Belegte Beobachtung (Fakt):** `AppRightsBL.HasUserRight` liest die Rechte über `Session.Advanced.Cache.GetOrAdd($"AllRightsFromAppUser{appUserI3D}", ...)`; die rechteverändernden Methoden derselben Klasse (`AddRightToRightGroup`, `RemoveUserFromRightGroup` und weitere) entfernen den Zwischenspeichereintrag nicht. Auch im Client hält `CentronCache.Instance.CurrentUserAppRights` die Rechte der laufenden Sitzung.
|
||||
- **Angenommene Soll-Aussage:** Das System soll den Entzug eines Rechts unverzüglich wirksam werden lassen.
|
||||
- **Offene Frage / fehlende Information:** Eine Ungültigmachung des Rechtezwischenspeichers nach einer Rechteänderung ist nicht auffindbar; zur Bestätigung fehlt ein Aufruf, der den Eintrag `AllRightsFromAppUser{…}` verwirft.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 644-650
|
||||
- **Klärung durch:** Einem angemeldeten Benutzer ein Recht entziehen und ohne Neuanmeldung die geschützte Funktion aufrufen; gelingt sie, ist die Hypothese bestätigt.
|
||||
- **Übernahmewürdigkeit:** übernehmen — im Zielsystem ist die unmittelbare Wirksamkeit von Rechteentzügen sicherzustellen.
|
||||
|
||||
### SyRS-201 — Das Riverbird-Produkt teilt sich Bestandteile mit c-entron
|
||||
|
||||
- **Ebene / Typ:** SyRS / Schnittstelle (Akteur: Systembetreiber)
|
||||
- **Akteur:** Systembetreiber
|
||||
- **Belegte Beobachtung (Fakt):** Der Riverbird-Bezug zieht sich durch mehrere Stellen: `deployment/riverbird/` neben `deployment/centron/`; `nugets/RiverbirdPortal.Common.1.0.4.nupkg`, `RiverbirdPortal.Interfaces.1.0.4.nupkg`, `RiverbirdPortal.WebServices.Core.1.0.4.nupkg`; das Modul `RiverSuiteWebServiceSettingsController` („Einstellungen für den Riverbird Web-Service-Zugang"); `AppRightsBL.GetRiversuiteRelevantRights()` mit der Entität `RiverSuiteRelevantRight`; `src/backend/Centron.BL/RiverDivo/`; Ressourcenschlüssel wie `RiverbirdTicketBL_GetTicket_…` in Klassen namens `TicketBL`. Die Lizenzdokumentation nennt „Riverbird Web-Service" als eigenständige Anwendung.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Bestandteile mit dem Schwesterprodukt Riverbird teilen und für dieses eine gesonderte Rechteauswahl bereitstellen.
|
||||
- **Offene Frage / fehlende Information:** Die Abgrenzung beider Produkte und der Umfang der geteilten Bestandteile sind aus der Codebasis nicht abschließend erschließbar; zur Bestätigung fehlt eine Produktbeschreibung des Schwesterprodukts.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, SEKUNDÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, `GetRiversuiteRelevantRights` (Zeilen 55-60)
|
||||
- **Klärung durch:** Die Abhängigkeiten der Riverbird-Pakete auf gemeinsame Bausteine prüfen; der Umfang der Kopplung wird daraus ersichtlich.
|
||||
- **Übernahmewürdigkeit:** Sonderfall — die Kopplung an ein Schwesterprodukt ist bei der Neuimplementierung fachlich zu entscheiden.
|
||||
|
||||
### SyRS-202 — Der Concerto-Baustein bedient einen Bestellformatstandard
|
||||
|
||||
- **Ebene / Typ:** SyRS / Schnittstelle (Akteur: Einkäufer)
|
||||
- **Akteur:** Einkäufer
|
||||
- **Belegte Beobachtung (Fakt):** `src/backend/Centron.Gateway/Concerto/` enthält genau zwei Dateien: `ConcertoOrder.cs` und `ConcertoOrder.xsd`; ein gleichnamiger Bereich `src/backend/Centron.BL/EDI/Concerto/` besteht in der Geschäftslogik. Eine Einstellungsseite, ein Modul oder eine Dokumentation zu diesem Format ist nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Bestellungen im Concerto-Format austauschen.
|
||||
- **Offene Frage / fehlende Information:** Der fachliche Zweck, der Partner und die Verwendung dieses Formats sind aus der Codebasis nicht erschließbar; zur Bestätigung fehlen eine Konfigurationsstelle und eine Formatbeschreibung.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.Gateway/Concerto/ConcertoOrder.xsd`
|
||||
- **Klärung durch:** Die Aufrufer des Concerto-Bausteins ermitteln; fehlen sie, ist das Format nicht erreichbar.
|
||||
- **Übernahmewürdigkeit:** übernehmen — sofern ein Partner das Format nutzt; andernfalls entfällt es.
|
||||
|
||||
### SyRS-203 — Der IT-Planer strukturiert Prüfobjekte für Checklisten
|
||||
|
||||
- **Ebene / Typ:** SyRS / funktional (Akteur: Servicetechniker)
|
||||
- **Akteur:** Servicetechniker
|
||||
- **Belegte Beobachtung (Fakt):** `src/backend/Centron.BL/ItPlanner/` enthält genau eine Klasse: `ChecklistVirtualObjectCategoryBL.cs`; ein gleichnamiger Entitätsbereich `Entities/ItPlanner/` besteht. Der Name verbindet „Checkliste", „virtuelles Objekt" und „Kategorie". Ein zugehöriges Modul oder eine Einstellungsseite ist nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Prüfobjekte für Checklisten in Kategorien gliedern, ohne dass ein reales Geschäftsobjekt vorliegen muss.
|
||||
- **Offene Frage / fehlende Information:** Der fachliche Zweck des Bereichs „ItPlanner" ist aus der Codebasis nicht erschließbar; zur Bestätigung fehlen eine Beschreibung und eine Modulanbindung.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/ItPlanner/ChecklistVirtualObjectCategoryBL.cs`
|
||||
- **Klärung durch:** Die Aufrufer der Klasse ermitteln und den Inhalt der zugehörigen Tabelle prüfen.
|
||||
- **Übernahmewürdigkeit:** übernehmen — sofern die Funktion produktiv genutzt wird; der Reifegrad ist zu klären.
|
||||
|
||||
### SyRS-204 — Die docuFORM-Anbindung liefert Gerätezählerstände
|
||||
|
||||
- **Ebene / Typ:** SyRS / Schnittstelle (Akteur: Buchhalter, Servicetechniker)
|
||||
- **Akteur:** Buchhalter, Servicetechniker
|
||||
- **Belegte Beobachtung (Fakt):** `Centron.Api.docuFORM/` liegt als einziges Projekt **außerhalb** von `src/` im Wurzelverzeichnis und enthält `DocuFormRestApiClient.cs`, `DocuFormRestApiConstants.cs`, `IDocuFormApiClient.cs`, `Helper/` und `Models/`. Die Einstellungsseite `DocuFormApiSettingsController` beschreibt „Einstellungen für den Datenaustausch über die REST Schnittstelle von docuFORM"; ein gleichnamiger v1-Controller besteht. `src/backend/Centron.BL/DataExchange/DocuForm/` bildet die Verarbeitung ab.
|
||||
- **Angenommene Soll-Aussage:** Das System soll über die docuFORM-Schnittstelle Gerätedaten — insbesondere Zählerstände von Druck- und Kopiersystemen — abrufen und der Vertragsabrechnung zuführen.
|
||||
- **Offene Frage / fehlende Information:** Der genaue Umfang der übernommenen Daten ist aus der Codebasis nicht abschließend erschließbar; zur Bestätigung fehlt eine Beschreibung der genutzten Endpunkte.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, SEKUNDÄR; erster PRIMÄR-Beleg: `Centron.Api.docuFORM/IDocuFormApiClient.cs` und `DocuFormRestApiClient.cs`
|
||||
- **Klärung durch:** Die im Anbindungsprojekt aufgerufenen Endpunkte auflisten und mit den Zählerimportfunktionen abgleichen.
|
||||
- **Übernahmewürdigkeit:** übernehmen — die automatische Zählererfassung ist für die verbrauchsabhängige Abrechnung wesentlich.
|
||||
|
||||
### SyRS-205 — Zeitangaben werden einheitlich in einer Zeitzone geführt
|
||||
|
||||
- **Ebene / Typ:** SyRS / Daten (Akteur: alle Komponenten)
|
||||
- **Akteur:** alle Komponenten
|
||||
- **Belegte Beobachtung (Fakt):** Zeitstempel werden durchgängig über `DateTime.Now` beziehungsweise `DateTime.Today` gebildet — so in `TicketBL.GetExpireDate` (`DateTime.Now.AddMinutes(...)`), `TwoFactorAuthBL.RememberLogin` (`login.LastLogin = DateTime.Now;`), `UsersBL.UpdatePassword` (`user2.LastPasswordChangedDate = DateTime.Now;`) und `Authenticator.ValidateAppUser` (`DateTime.Today >= user.AccountDisabledFromDate`). Der Container setzt `ENV TZ=Europe/Berlin`. Eine Verwendung von `DateTime.UtcNow` oder `DateTimeOffset` ist an den geprüften Stellen nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Zeitstempel eindeutig einer Zeitzone zuordnen.
|
||||
- **Offene Frage / fehlende Information:** Die durchgängige Verwendung der Ortszeit ohne Zeitzonenangabe ist belegt; ob daraus im Mehrzonenbetrieb Abweichungen entstehen, ist ohne Ausführung nicht feststellbar.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, Zeile 163 (`return DateTime.Now.AddMinutes(expireDurationInMinutes);`)
|
||||
- **Klärung durch:** Den Container mit abweichender Zeitzone betreiben und Sitzungsablauf sowie Kontodeaktivierung prüfen; abweichendes Verhalten bestätigt die Hypothese.
|
||||
- **Übernahmewürdigkeit:** übernehmen — im SaaS-Zielsystem sind Zeitstempel in UTC zu führen und erst bei der Anzeige umzurechnen.
|
||||
|
||||
### SwRS-190 — Zeitstempel werden zeitzonensicher gebildet
|
||||
|
||||
- **Ebene / Typ:** SwRS / Daten (Akteur: alle Komponenten)
|
||||
- **Akteur:** alle Komponenten
|
||||
- **Belegte Beobachtung (Fakt):** Die geprüften Komponenten bilden Zeitstempel ausschließlich über `DateTime.Now` und `DateTime.Today`; die Datenbankspalten sind entsprechend `datetime` beziehungsweise `datetime2` ohne Zeitzonenanteil (`Sichbenu.LoginTime`, `LastWebLogin`, `LetzKennAend`, `LastTwoFactorValidatedAt`). Ein Datentyp mit Zeitzonenanteil (`datetimeoffset`) ist in den geprüften Tabellen nicht verwendet.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Zeitstempel so speichern, dass ihre Zeitzone eindeutig ist.
|
||||
- **Offene Frage / fehlende Information:** Da weder Anwendungscode noch Datenmodell einen Zeitzonenanteil führen, ist die Eindeutigkeit nur bei einheitlicher Serverzeitzone gegeben; zur Bestätigung fehlt eine Festlegung der Betriebszeitzone außerhalb des Containers.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `SSMS_DB_SCHEMA.sql`, `dbo.Sichbenu`, Spalten `[LoginTime] [datetime]`, `[LastWebLogin] [datetime]`, `[LetzKennAend] [datetime]`, `[LastTwoFactorValidatedAt] [datetime2](7)`
|
||||
- **Klärung durch:** Zwei Anwendungsinstanzen mit unterschiedlicher Zeitzone gegen dieselbe Datenbank betreiben und Zeitstempel vergleichen.
|
||||
- **Übernahmewürdigkeit:** übernehmen — im Zielsystem sind Zeitstempel in UTC zu speichern.
|
||||
|
||||
### SwRS-191 — Die Nummernvergabe ist gegen gleichzeitige Zugriffe gesichert
|
||||
|
||||
- **Ebene / Typ:** SwRS / Daten (Akteur: Komponente `NumberGroupBL`)
|
||||
- **Akteur:** Komponente `NumberGroupBL`
|
||||
- **Belegte Beobachtung (Fakt):** `NumberGroupBL.GetNextNumber(numberGroupEnum, numberGroupObject, updateDatabase)` liest und erhöht den Zähler des Nummernkreises. Eine ausdrückliche Sperre — wie sie `Authenticator.AuthenticateUser` mit `lock (_getExistingOrCreateTicketLock)` für die Ticketvergabe verwendet — ist für die Nummernvergabe nicht auffindbar; die Datenbank sichert die Eindeutigkeit nicht ab (siehe SyRS-190).
|
||||
- **Angenommene Soll-Aussage:** Das System soll bei gleichzeitiger Belegerstellung sicherstellen, dass jede Nummer nur einmal vergeben wird.
|
||||
- **Offene Frage / fehlende Information:** Ein Sicherungsmechanismus ist nicht auffindbar; zur Bestätigung fehlt eine Sperre, eine Transaktionsisolationsstufe oder eine Eindeutigkeitsbedingung.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs`
|
||||
- **Klärung durch:** Zwei Belege gleichzeitig aus getrennten Sitzungen speichern und die Nummern vergleichen.
|
||||
- **Übernahmewürdigkeit:** übernehmen — die Nebenläufigkeitssicherung der Nummernvergabe ist im Zielsystem ausdrücklich zu lösen.
|
||||
|
||||
### SwRS-192 — Die als unsicher geltende Binärserialisierung wird nur für einen Zweck genutzt
|
||||
|
||||
- **Ebene / Typ:** SwRS / Sicherheit (Akteur: alle Komponenten)
|
||||
- **Akteur:** alle Komponenten
|
||||
- **Belegte Beobachtung (Fakt):** `Directory.Build.props` setzt `<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>` für **alle** Projekte der Projektmappe; der begleitende Kommentar lautet „BinaryFormatter (only used for NHibernate Configuration serialization)". Die Einstellung wirkt jedoch projektübergreifend und schränkt die Nutzung nicht auf diesen Zweck ein.
|
||||
- **Angenommene Soll-Aussage:** Das System soll die als unsicher geltende Binärserialisierung ausschließlich zum Zwischenspeichern der NHibernate-Konfiguration verwenden.
|
||||
- **Offene Frage / fehlende Information:** Die Beschränkung auf diesen Zweck beruht ausschließlich auf einem Kommentar; zur Bestätigung fehlt eine Prüfung aller Verwendungsstellen der Binärserialisierung.
|
||||
- **Belegsituation:** 1 Belege — PRIMÄR; erster PRIMÄR-Beleg: `Directory.Build.props`, Zeilen 40-43
|
||||
- **Klärung durch:** Die Projektmappe nach Verwendungen von `BinaryFormatter` durchsuchen; jede Fundstelle außerhalb der NHibernate-Konfiguration widerlegt den Kommentar.
|
||||
- **Übernahmewürdigkeit:** veraltet — die Binärserialisierung ist im Zielsystem durch ein sicheres Verfahren zu ersetzen.
|
||||
|
||||
### SwRS-193 — Die automatisierte Prüfung deckt die Fachlogik ausreichend ab
|
||||
|
||||
- **Ebene / Typ:** SwRS / nicht-funktional (Testbarkeit (ISO/IEC 25010, Wartbarkeit))
|
||||
- **Akteur:** Hersteller
|
||||
- **Belegte Beobachtung (Fakt):** Sieben Testprojektgruppen bestehen; `build-pipeline.yml` bricht bei fehlgeschlagenen End-zu-End-Tests ab. Eine Vorgabe zur Abdeckung — etwa eine Mindestquote oder eine Auswertung in `analyze-pipeline.yml` — ist aus den Pipeline-Definitionen nicht ableitbar. Zugleich empfiehlt die Belegarchitektur ausdrücklich End-zu-End-Tests als bevorzugtes Sicherungsnetz für neue Belegfelder, weil der Speicherpfad über die Legacy-Repositories führt.
|
||||
- **Angenommene Soll-Aussage:** Das System soll durch automatisierte Prüfungen gegen Regressionen gesichert sein.
|
||||
- **Offene Frage / fehlende Information:** Der erreichte Abdeckungsgrad ist ohne Ausführung der Prüfungen nicht feststellbar; zur Bestätigung fehlen Abdeckungsberichte.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, KONTEXT; erster PRIMÄR-Beleg: `azure/build-pipeline.yml`, `failTaskOnFailedTests: true`
|
||||
- **Klärung durch:** Die Prüfungen mit Abdeckungsmessung ausführen und die Quote je Baustein auswerten.
|
||||
- **Übernahmewürdigkeit:** übernehmen — Abdeckungsvorgaben sind im Zielsystem festzulegen.
|
||||
|
||||
### SwRS-194 — Alle Projekte liegen unterhalb des Quellverzeichnisses
|
||||
|
||||
- **Ebene / Typ:** SwRS / nicht-funktional (Modifizierbarkeit (ISO/IEC 25010, Wartbarkeit))
|
||||
- **Akteur:** Hersteller
|
||||
- **Belegte Beobachtung (Fakt):** Die Navigationsdokumentation beschreibt die Gliederung `src/apis/`, `src/backend/`, `src/centron/`, `src/nexus/`, `src/shared/`, `src/webservice/` und weist darauf hin: „not every folder under `src/` is listed above—search the `.sln` for exact project names". Tatsächlich liegt `Centron.Api.docuFORM/` als vollständiges Projekt unmittelbar im Wurzelverzeichnis der Projektmappe, außerhalb von `src/`.
|
||||
- **Angenommene Soll-Aussage:** Das System soll alle Projekte einheitlich unterhalb des Quellverzeichnisses führen.
|
||||
- **Offene Frage / fehlende Information:** Mindestens ein Projekt weicht davon ab; ob weitere Abweichungen bestehen, ist ohne vollständige Auswertung der Projektmappe nicht feststellbar.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, KONTEXT; erster PRIMÄR-Beleg: `Centron.Api.docuFORM/Centron.Api.docuFORM.csproj`
|
||||
- **Klärung durch:** Alle Projektpfade aus `Centron.sln` auslesen und gegen `src/` prüfen; Abweichungen werden dabei vollständig sichtbar.
|
||||
- **Übernahmewürdigkeit:** übernehmen — eine einheitliche Projektstruktur ist im Zielsystem herzustellen.
|
||||
|
||||
### SwRS-195 — Fremdbestandteile werden ausschließlich über Paketverwaltung bezogen
|
||||
|
||||
- **Ebene / Typ:** SwRS / nicht-funktional (Wartbarkeit (ISO/IEC 25010))
|
||||
- **Akteur:** Hersteller
|
||||
- **Belegte Beobachtung (Fakt):** Zwei Bezugswege bestehen nebeneinander: `nugets/` enthält 13 lokal abgelegte Pakete (darunter `FastReport.Core.2022.1.6.nupkg` **und** `FastReport.Core.2025.1.3.nupkg`, also zwei Hauptversionen desselben Bausteins, sowie `Centron.Office.Client.1.1.433.nupkg` und drei `RiverbirdPortal.*`-Pakete); `assemblies/` enthält Binärbestandteile für `7pdf`, `outlook`, `remote-desktop`, `tapi` und `wpf`. Die Regel für Fremdbestandteile der Weboberfläche verlangt entweder LibMan oder eine CDN-Einbindung mit Integritätsprüfsumme.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Fremdbestandteile nachvollziehbar beziehen und ihre Herkunft prüfbar halten.
|
||||
- **Offene Frage / fehlende Information:** Herkunft, Lizenzstand und Aktualität der lokal abgelegten Pakete und Binärbestandteile sind aus der Codebasis nicht feststellbar; zur Bestätigung fehlen Herkunfts- und Lizenzangaben zu diesen Dateien.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, SEKUNDÄR; erster PRIMÄR-Beleg: `nugets/` mit 13 Paketen, darunter zwei FastReport-Hauptversionen
|
||||
- **Klärung durch:** Zu jedem Eintrag in `assemblies/` Herkunft und Lizenz belegen; fehlende Nachweise bestätigen die Hypothese.
|
||||
- **Übernahmewürdigkeit:** übernehmen — im Zielsystem sind Fremdbestandteile ausschließlich über eine nachvollziehbare Paketverwaltung zu beziehen.
|
||||
|
||||
### SwRS-196 — Das Delphi-Vorgängersystem greift auf dieselbe Datenbank zu
|
||||
|
||||
- **Ebene / Typ:** SwRS / Daten (Akteur: Systembetreiber)
|
||||
- **Akteur:** Systembetreiber
|
||||
- **Belegte Beobachtung (Fakt):** Mehrere Stellen weisen auf ein parallel betriebenes Vorgängersystem hin: `LicenseManager.TryFixCentronDelphiVersionNumber` behandelt Versionsnummern der Form 9.3.x.y und teilt sich die Lizenz-GUID mit c-entron.NET; die Anleitung zum Anlegen eines Rechts beschreibt die Spalten `FomName` und `FomCont` der Tabelle `Sichrech` mit dem Hinweis „is important for Delphi, but not for Centron"; die Tabellen tragen deutschsprachige Namen aus dem Vorgängerbestand (`Sichbenu`, `Sichrech`, `Sichtrus`, `Sichmemb`, `AngKopf`, `RechKopf`).
|
||||
- **Angenommene Soll-Aussage:** Das System soll denselben Datenbestand mit dem Delphi-Vorgängersystem teilen können.
|
||||
- **Offene Frage / fehlende Information:** Ob das Vorgängersystem noch produktiv betrieben wird und welche Bereiche es schreibt, ist aus der Codebasis nicht feststellbar; zur Bestätigung fehlen Angaben zum Betriebsstand des Vorgängersystems.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 304-330
|
||||
- **Klärung durch:** Die Spalten `FomName` und `FomCont` in `Sichrech` auf gefüllte Werte prüfen; gefüllte Werte belegen die fortbestehende Nutzung.
|
||||
- **Übernahmewürdigkeit:** veraltet — die Rücksichtnahme auf das Vorgängersystem entfällt im Zielsystem; die betroffenen Spalten und Ausnahmen sind zu entfernen.
|
||||
|
||||
### SwRS-197 — Statische Zwischenspeicher sind für den Mehrmandantenbetrieb geeignet
|
||||
|
||||
- **Ebene / Typ:** SwRS / Sicherheit (Akteur: alle Komponenten)
|
||||
- **Akteur:** alle Komponenten
|
||||
- **Belegte Beobachtung (Fakt):** Mehrere Zustände werden prozessweit statisch gehalten: `TwoFactorAuthBL._globalValidator` (statischer Prüfer des zweiten Faktors), `LicenseManager._instance` (Einzelinstanz mit Ausnahme bei doppelter Einrichtung), `ReceiptBL._alreadyLoadedAdditionalData` (statische `ConditionalWeakTable`) und `CentronCache.Instance` im Client. Die Sitzungszwischenspeicher der Rechte liegen dagegen je Datenzugriffssitzung.
|
||||
- **Angenommene Soll-Aussage:** Das System soll prozessweite Zwischenspeicher so führen, dass Daten verschiedener Mandanten und Benutzer nicht vermischt werden.
|
||||
- **Offene Frage / fehlende Information:** Ob die statischen Zustände im Mehrmandantenbetrieb unbedenklich sind, ist ohne Ausführung nicht feststellbar; zur Bestätigung fehlt eine Prüfung, ob je Mandant ein eigener Prozess betrieben wird.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeile 182 (`private static ITwoFactorValidator _globalValidator;`)
|
||||
- **Klärung durch:** Zwei Mandanten über denselben Webservice-Prozess bedienen und die Wirkung mandantenabhängiger Einstellungen prüfen.
|
||||
- **Übernahmewürdigkeit:** übernehmen — im SaaS-Zielsystem sind prozessweite Zustände zu vermeiden oder ausdrücklich mandantenbezogen zu schlüsseln.
|
||||
|
||||
### SwRS-198 — Die zweite Steuerelementbibliothek dient der Produktvorschau
|
||||
|
||||
- **Ebene / Typ:** SwRS / funktional (Akteur: Hersteller)
|
||||
- **Akteur:** Hersteller
|
||||
- **Belegte Beobachtung (Fakt):** Neben `src/shared/Centron.Controls/` besteht `src/shared/Centron.Controls.Preview/`. Zugleich wertet `ModuleFeatures.SetAccessRights(...)` die Lizenz `LicenseGuids.ProductPreview` aus. Eine Beschreibung der zweiten Bibliothek oder eine Zuordnung zur Vorschaulizenz ist nicht auffindbar.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Oberflächenbausteine für noch nicht freigegebene Funktionen getrennt führen und über eine Vorschaulizenz freischalten.
|
||||
- **Offene Frage / fehlende Information:** Der Zusammenhang zwischen `Centron.Controls.Preview` und `LicenseGuids.ProductPreview` ist nicht belegbar; zur Bestätigung fehlt eine Verwendungsstelle, die beides verbindet.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/shared/Centron.Controls.Preview/`
|
||||
- **Klärung durch:** Die Verwendungsstellen der Vorschaubibliothek ermitteln und prüfen, ob sie an die Vorschaulizenz gebunden sind.
|
||||
- **Übernahmewürdigkeit:** übernehmen — ein getrennter Vorschauweg ist sinnvoll; die Kopplung ist im Zielsystem ausdrücklich herzustellen.
|
||||
|
||||
### SwRS-199 — Migrationsskripte enthalten keine fachlichen Regeln
|
||||
|
||||
- **Ebene / Typ:** SwRS / Daten (Akteur: Komponente `ScriptEngineBL`)
|
||||
- **Akteur:** Komponente `ScriptEngineBL`
|
||||
- **Belegte Beobachtung (Fakt):** Die 790 Skriptklassen enthalten neben Strukturänderungen auch Datenänderungen; mehrere Skripte führen umfangreiche SQL-Anweisungen mit fachlichem Inhalt, etwa die wiederkehrende Zuweisung `VatRate = CONVERT(decimal(24, 8), a.Mwst_Satz)` beziehungsweise `VatRate = CONVERT(decimal(24, 8), MS.Mwst)` in `ScriptMethod11152`, `11176`, `11256`, `11362`, `11373`, `11422`, `11543` und `11713` — dieselbe Umrechnung erscheint in acht Skripten und zusätzlich in `AutomaticFacturaBL.Contracts.cs` Zeile 2400. Zusätzlich liegen vier `SQLScriptCollection*.xml` und drei `SQLScriptCollectionMonitoring*.xml` mit SQL-Anweisungen vor.
|
||||
- **Angenommene Soll-Aussage:** Das System soll fachliche Regeln in der Geschäftslogik führen und Migrationsskripte auf Struktur- und Datenüberführung beschränken.
|
||||
- **Offene Frage / fehlende Information:** Mindestens die Steuersatzumrechnung liegt sowohl in Skripten als auch in der Geschäftslogik vor; ob weitere fachliche Regeln ausschließlich in Skripten oder Sichten stehen, ist ohne Auswertung aller 790 Skripte und der Sichten nicht feststellbar.
|
||||
- **Belegsituation:** 3 Belege — PRIMÄR, PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/Administration/Scripts/ScriptMethods/Scripts/ScriptMethod11152.cs` Zeilen 53 und 144 sowie sieben weitere Skripte mit identischer Zuweisung
|
||||
- **Klärung durch:** Die Sichten und Skripte nach Berechnungen durchsuchen, die in der Geschäftslogik nicht vorkommen; jede Fundstelle ist eine ausschließlich in der Datenbank geführte Regel.
|
||||
- **Übernahmewürdigkeit:** übernehmen — im Zielsystem gehören fachliche Regeln ausschließlich in die Geschäftslogik.
|
||||
|
||||
### SwRS-200 — Die Anbindung fremder Ticketsysteme ist produktiv nutzbar
|
||||
|
||||
- **Ebene / Typ:** SwRS / Schnittstelle (Akteur: Komponente `ExternalHelpdesk`)
|
||||
- **Akteur:** Komponente `ExternalHelpdesk`
|
||||
- **Belegte Beobachtung (Fakt):** `src/backend/Centron.BL/ExternalHelpdesk/` und `src/backend/Centron.Entities/Entities/ExternalHelpdesk/` bestehen als eigene Bereiche; eine Einstellungsseite zur Konfiguration einer Anbindung, ein Modul oder eine v1-Ressource für fremde Ticketsysteme ist in `ModuleRegistration` und den Controllern nicht auffindbar. Die auffindbaren Weiterleitungsfunktionen (`HelpdeskForwardBL`, `ServiceBoard/ForwardTicket/`) betreffen die Weitergabe innerhalb des Systems.
|
||||
- **Angenommene Soll-Aussage:** Das System soll Tickets mit fremden Ticketsystemen austauschen.
|
||||
- **Offene Frage / fehlende Information:** Ob und wie eine solche Anbindung konfiguriert wird, ist nicht belegbar; zur Bestätigung fehlt eine Konfigurationsstelle für fremde Ticketsysteme.
|
||||
- **Belegsituation:** 2 Belege — PRIMÄR, PRIMÄR; erster PRIMÄR-Beleg: `src/backend/Centron.BL/ExternalHelpdesk/`
|
||||
- **Klärung durch:** Die Aufrufer der Bausteine ermitteln; fehlen sie außerhalb von Tests, ist die Anbindung nicht erreichbar.
|
||||
- **Übernahmewürdigkeit:** übernehmen — der Austausch mit Partnersystemen ist im Servicegeschäft gefordert; der Reifegrad ist zu klären.
|
||||
|
||||
## 4. Abgleich gegen die Inline-Markierungen
|
||||
|
||||
Der Abgleich wurde maschinell über alle drei Spezifikationsdateien geführt: verglichen wurden die Menge der Anforderungen mit `Status: HYPOTHESE` und die Menge der Anforderungen, deren Block die Zeichenfolge `[HYPOTHESE]` enthält.
|
||||
|
||||
| Prüfung | Ergebnis |
|
||||
|---|---|
|
||||
| Anforderungen mit `Status: HYPOTHESE` | 33 |
|
||||
| Anforderungen mit `[HYPOTHESE]`-Markierung im Block | 33 |
|
||||
| Nur `Status`, keine Markierung | 0 |
|
||||
| Nur Markierung, kein `Status` | 0 |
|
||||
| In dieser Datei aufgeführt | 33 |
|
||||
| Zusätzliche freie Fragen in dieser Datei | 0 |
|
||||
|
||||
Beide Mengen sind deckungsgleich; `Hypothesen.md` nennt genau diese Anforderungen.
|
||||
+1989
File diff suppressed because it is too large
Load Diff
+2750
File diff suppressed because it is too large
Load Diff
+3670
File diff suppressed because it is too large
Load Diff
+325
@@ -0,0 +1,325 @@
|
||||
# Traceability — konsolidierte Verfolgbarkeitstabelle
|
||||
|
||||
**System:** NEXOWARE c-entron ERP-Suite
|
||||
**Norm:** ISO/IEC/IEEE 29148:2018 — Forward- und Backward-Traceability zwischen StRS, SyRS und SwRS
|
||||
|
||||
## 1. Aufbau
|
||||
|
||||
Die Tabelle ist aus den Feldern `Tracelinks` aller Anforderungsblöcke maschinell erzeugt und in beide Richtungen ausgewertet: Eine Zeile entsteht sowohl, wenn eine StRS-Anforderung auf eine SyRS-Anforderung verweist, als auch, wenn eine SyRS-Anforderung auf die StRS-Anforderung zurückverweist. Dasselbe gilt für das Paar SyRS/SwRS. Ein Strich (—) bedeutet, dass auf der betreffenden Ebene keine verknüpfte Anforderung besteht.
|
||||
|
||||
Die Spalte `Artefaktbeleg` nennt den ersten `PRIMÄR`-Beleg der jeweils rechtesten besetzten Ebene der Zeile; die vollständige Belegliste steht im Anforderungsblock selbst.
|
||||
|
||||
**Zeilen:** 299
|
||||
**Verknüpfte Anforderungen:** 100 StRS, 190 SyRS, 144 SwRS
|
||||
|
||||
## 2. Tabelle
|
||||
|
||||
| StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg |
|
||||
|---|---|---|---|
|
||||
| StRS-001 | SyRS-001 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-001 | SyRS-001 | SwRS-006 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 3707-3757 |
|
||||
| StRS-001 | SyRS-001 | SwRS-007 | `src/backend/Centron.DAO/` — die sieben `SaveReceipt*Repository`-Klassen mit `SynchronizeReceiptData` und `SynchronizeReceiptItemData` |
|
||||
| StRS-001 | SyRS-001 | SwRS-008 | `src/backend/Centron.Entities/Entities/DbEntities/` und `src/backend/Centron.DAO/Mappings/TemporaryEntities/` |
|
||||
| StRS-001 | SyRS-001 | SwRS-009 | `SSMS_DB_SCHEMA.sql` — die Tabellen `AngKopf`, `AufKopf`, `LiefKopf`, `RechKopf`, `VertragKopf`, `GutKopf`, `AbholKopf` und die zugehörigen Sichten |
|
||||
| StRS-001 | SyRS-002 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-001 | SyRS-005 | SwRS-003 | `src/backend/Centron.Interfaces/Sales/Receipts/ReceiptState.cs`, Zeilen 6-27 |
|
||||
| StRS-001 | SyRS-008 | SwRS-005 | `src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptBase.cs`, Feld `ConcurrencyControlGuid` |
|
||||
| StRS-001 | SyRS-009 | SwRS-006 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 3707-3757 |
|
||||
| StRS-001 | SyRS-192 | SwRS-003 | `src/backend/Centron.Interfaces/Sales/Receipts/ReceiptState.cs`, Zeilen 6-27 |
|
||||
| StRS-001 | SyRS-215 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-001 | SyRS-220 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-001 | SyRS-220 | SwRS-007 | `src/backend/Centron.DAO/` — die sieben `SaveReceipt*Repository`-Klassen mit `SynchronizeReceiptData` und `SynchronizeReceiptItemData` |
|
||||
| StRS-002 | SyRS-003 | SwRS-002 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 7264-7285 |
|
||||
| StRS-002 | SyRS-003 | SwRS-191 | `src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs` |
|
||||
| StRS-002 | SyRS-004 | SwRS-002 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 7264-7285 |
|
||||
| StRS-002 | SyRS-190 | SwRS-191 | `src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs` |
|
||||
| StRS-002 | SyRS-199 | SwRS-197 | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeile 182 (`private static ITwoFactorValidator _globalValidator;`) |
|
||||
| StRS-002 | SyRS-210 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-002 | SyRS-219 | SwRS-002 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 7264-7285 |
|
||||
| StRS-003 | SyRS-010 | SwRS-010 | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 95-111 |
|
||||
| StRS-003 | SyRS-010 | SwRS-019 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 7244-7255 |
|
||||
| StRS-003 | SyRS-011 | SwRS-010 | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 95-111 |
|
||||
| StRS-003 | SyRS-013 | SwRS-011 | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 42-46, 355-357, 391-393, 444-446 |
|
||||
| StRS-003 | SyRS-015 | SwRS-012 | `src/webservice/Centron.WebServices.Core/EntitiesWrongPlace/Administration/Rights/UserRightsConst.cs`, Zeilen 1960 und 1976 |
|
||||
| StRS-003 | SyRS-079 | SwRS-070 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8038-8039 |
|
||||
| StRS-003 | SyRS-200 | — | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 644-650 |
|
||||
| StRS-004 | SyRS-012 | SwRS-011 | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 42-46, 355-357, 391-393, 444-446 |
|
||||
| StRS-004 | SyRS-013 | SwRS-011 | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 42-46, 355-357, 391-393, 444-446 |
|
||||
| StRS-004 | SyRS-052 | SwRS-050 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, Zeile 455 (`IsDirtyProperty`) |
|
||||
| StRS-004 | SyRS-229 | SwRS-051 | `src/backend/Centron.BL/Sales/Support/` mit den neun genannten Klassen |
|
||||
| StRS-005 | SyRS-016 | SwRS-013 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 416-488 |
|
||||
| StRS-005 | SyRS-017 | SwRS-013 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 416-488 |
|
||||
| StRS-005 | SyRS-018 | SwRS-020 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 497-527 |
|
||||
| StRS-005 | SyRS-018 | SwRS-184 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 397-404 |
|
||||
| StRS-005 | SyRS-019 | SwRS-020 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 497-527 |
|
||||
| StRS-005 | SyRS-020 | SwRS-021 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 47-173 |
|
||||
| StRS-005 | SyRS-021 | SwRS-021 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 47-173 |
|
||||
| StRS-005 | SyRS-021 | SwRS-196 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 304-330 |
|
||||
| StRS-005 | SyRS-022 | SwRS-013 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 416-488 |
|
||||
| StRS-005 | SyRS-022 | SwRS-138 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 371-378 |
|
||||
| StRS-005 | SyRS-022 | SwRS-198 | `src/shared/Centron.Controls.Preview/` |
|
||||
| StRS-005 | SyRS-023 | SwRS-013 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 416-488 |
|
||||
| StRS-005 | SyRS-158 | SwRS-158 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 72-73 |
|
||||
| StRS-005 | SyRS-201 | SwRS-021 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 47-173 |
|
||||
| StRS-006 | SyRS-030 | SwRS-030 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 51-66 und 94-155 |
|
||||
| StRS-006 | SyRS-031 | SwRS-030 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 51-66 und 94-155 |
|
||||
| StRS-006 | SyRS-031 | SwRS-031 | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeilen 181-194 |
|
||||
| StRS-006 | SyRS-034 | SwRS-030 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 51-66 und 94-155 |
|
||||
| StRS-006 | SyRS-035 | SwRS-032 | `src/webservice/Centron.Controllers/Controllers/Unversioned/JwtAuthController.cs`, Zeilen 25-39 |
|
||||
| StRS-006 | SyRS-036 | SwRS-033 | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, Zeilen 166-170 |
|
||||
| StRS-006 | SyRS-036 | SwRS-178 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 70-84 und 100-106 |
|
||||
| StRS-006 | SyRS-038 | SwRS-033 | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, Zeilen 166-170 |
|
||||
| StRS-006 | SyRS-038 | SwRS-034 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 21-42 |
|
||||
| StRS-006 | SyRS-039 | SwRS-034 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 21-42 |
|
||||
| StRS-007 | SyRS-032 | SwRS-031 | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeilen 181-194 |
|
||||
| StRS-007 | SyRS-033 | SwRS-031 | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeilen 181-194 |
|
||||
| StRS-008 | SyRS-014 | SwRS-040 | `SSMS_DB_SCHEMA.sql`, Tabelle `dbo.WebAccounts`, Zeilen 54842-54865 |
|
||||
| StRS-008 | SyRS-040 | SwRS-040 | `SSMS_DB_SCHEMA.sql`, Tabelle `dbo.WebAccounts`, Zeilen 54842-54865 |
|
||||
| StRS-008 | SyRS-041 | SwRS-041 | `src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs`, Zeilen 65-105 |
|
||||
| StRS-008 | SyRS-041 | SwRS-042 | `src/nexus/CentronNexus/Shared/Authorization/` mit den zwölf genannten Bausteinen |
|
||||
| StRS-008 | SyRS-042 | SwRS-040 | `SSMS_DB_SCHEMA.sql`, Tabelle `dbo.WebAccounts`, Zeilen 54842-54865 |
|
||||
| StRS-008 | SyRS-043 | SwRS-041 | `src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs`, Zeilen 65-105 |
|
||||
| StRS-008 | SyRS-043 | SwRS-042 | `src/nexus/CentronNexus/Shared/Authorization/` mit den zwölf genannten Bausteinen |
|
||||
| StRS-008 | SyRS-054 | SwRS-041 | `src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs`, Zeilen 65-105 |
|
||||
| StRS-009 | SyRS-015 | SwRS-012 | `src/webservice/Centron.WebServices.Core/EntitiesWrongPlace/Administration/Rights/UserRightsConst.cs`, Zeilen 1960 und 1976 |
|
||||
| StRS-009 | SyRS-050 | SwRS-050 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, Zeile 455 (`IsDirtyProperty`) |
|
||||
| StRS-009 | SyRS-051 | SwRS-050 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, Zeile 455 (`IsDirtyProperty`) |
|
||||
| StRS-009 | SyRS-052 | SwRS-050 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, Zeile 455 (`IsDirtyProperty`) |
|
||||
| StRS-009 | SyRS-054 | SwRS-041 | `src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs`, Zeilen 65-105 |
|
||||
| StRS-009 | SyRS-055 | SwRS-052 | `src/backend/Centron.BL/Sales/Support/HelpdeskCreationTemplateBL.cs` und `HelpdeskCategoryPatternBL.cs` |
|
||||
| StRS-009 | SyRS-129 | SwRS-129 | `src/backend/Centron.BL/Sales/Support/HelpdeskForwardBL.cs` |
|
||||
| StRS-009 | SyRS-129 | SwRS-200 | `src/backend/Centron.BL/ExternalHelpdesk/` |
|
||||
| StRS-009 | SyRS-228 | SwRS-050 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, Zeile 455 (`IsDirtyProperty`) |
|
||||
| StRS-009 | SyRS-236 | SwRS-041 | `src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs`, Zeilen 65-105 |
|
||||
| StRS-010 | SyRS-052 | SwRS-050 | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs`, Zeile 455 (`IsDirtyProperty`) |
|
||||
| StRS-010 | SyRS-053 | SwRS-051 | `src/backend/Centron.BL/Sales/Support/` mit den neun genannten Klassen |
|
||||
| StRS-010 | SyRS-216 | SwRS-051 | `src/backend/Centron.BL/Sales/Support/` mit den neun genannten Klassen |
|
||||
| StRS-010 | SyRS-229 | SwRS-051 | `src/backend/Centron.BL/Sales/Support/` mit den neun genannten Klassen |
|
||||
| StRS-010 | SyRS-236 | SwRS-041 | `src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs`, Zeilen 65-105 |
|
||||
| StRS-011 | SyRS-060 | SwRS-060 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeile 60 (`public partial class AutomaticFacturaBL`) |
|
||||
| StRS-011 | SyRS-061 | SwRS-061 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 1072-1086 |
|
||||
| StRS-011 | SyRS-066 | SwRS-064 | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| StRS-011 | SyRS-067 | SwRS-060 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeile 60 (`public partial class AutomaticFacturaBL`) |
|
||||
| StRS-011 | SyRS-068 | SwRS-060 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeile 60 (`public partial class AutomaticFacturaBL`) |
|
||||
| StRS-011 | SyRS-212 | SwRS-064 | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| StRS-011 | SyRS-214 | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 463-465 |
|
||||
| StRS-011 | SyRS-215 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-012 | SyRS-061 | SwRS-061 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 1072-1086 |
|
||||
| StRS-012 | SyRS-062 | SwRS-062 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 1066-1101 |
|
||||
| StRS-012 | SyRS-063 | SwRS-062 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 1066-1101 |
|
||||
| StRS-013 | SyRS-064 | SwRS-063 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 492, 522, 532, 765 |
|
||||
| StRS-013 | SyRS-065 | SwRS-063 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 492, 522, 532, 765 |
|
||||
| StRS-013 | SyRS-130 | SwRS-130 | `src/backend/Centron.Entities/Entities/Sales/CustomerAssets/Contracts/ClickContracts/MasterDataListCompact.cs` und `MasterDataListItemsCompact.cs` |
|
||||
| StRS-013 | SyRS-204 | — | `Centron.Api.docuFORM/IDocuFormApiClient.cs` und `DocuFormRestApiClient.cs` |
|
||||
| StRS-014 | SyRS-070 | SwRS-070 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8038-8039 |
|
||||
| StRS-014 | SyRS-070 | SwRS-135 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8846-8859 |
|
||||
| StRS-014 | SyRS-079 | SwRS-070 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8038-8039 |
|
||||
| StRS-015 | SyRS-071 | SwRS-071 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9575-9578 |
|
||||
| StRS-015 | SyRS-072 | SwRS-071 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9575-9578 |
|
||||
| StRS-015 | SyRS-142 | SwRS-142 | `src/backend/Centron.BL/Sales/Receipts/ArticleSearch/` mit den drei gleichnamig benannten Anbieterklassen |
|
||||
| StRS-016 | SyRS-073 | SwRS-072 | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs`, Zeilen 221, 224, 227, 230 |
|
||||
| StRS-016 | SyRS-217 | SwRS-072 | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs`, Zeilen 221, 224, 227, 230 |
|
||||
| StRS-016 | SyRS-218 | SwRS-072 | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs`, Zeilen 221, 224, 227, 230 |
|
||||
| StRS-017 | SyRS-074 | SwRS-073 | `src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs`, Zeilen 179-184 |
|
||||
| StRS-017 | SyRS-075 | SwRS-073 | `src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs`, Zeilen 179-184 |
|
||||
| StRS-018 | SyRS-076 | SwRS-074 | `src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs`, Zeilen 833-838 |
|
||||
| StRS-018 | SyRS-076 | SwRS-075 | `src/backend/Centron.Gateway/ZUGFeRD21_Extended/` und `src/apis/Centron.Api.EbInterface/EbInterfaceLogic.cs` |
|
||||
| StRS-018 | SyRS-076 | SwRS-144 | `src/backend/Centron.BL/DataExchange/EDI/` und `src/backend/Centron.BL/EDI/` |
|
||||
| StRS-018 | SyRS-077 | SwRS-074 | `src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs`, Zeilen 833-838 |
|
||||
| StRS-018 | SyRS-077 | SwRS-144 | `src/backend/Centron.BL/DataExchange/EDI/` und `src/backend/Centron.BL/EDI/` |
|
||||
| StRS-018 | SyRS-222 | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 273-275 |
|
||||
| StRS-019 | SyRS-078 | SwRS-076 | `src/backend/Centron.BL/WebServices/DataExchange/BookKeeping/BookKeepingExportWebServiceBL.cs`, Zeilen 561-563 und `BookKeepingImportWebServiceBL.cs`, Zeilen 174-176 |
|
||||
| StRS-019 | SyRS-177 | SwRS-177 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 8872 |
|
||||
| StRS-019 | SyRS-217 | SwRS-072 | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs`, Zeilen 221, 224, 227, 230 |
|
||||
| StRS-019 | SyRS-221 | SwRS-177 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 8872 |
|
||||
| StRS-020 | SyRS-080 | SwRS-080 | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs`, Zeilen 32-40 |
|
||||
| StRS-020 | SyRS-081 | SwRS-080 | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs`, Zeilen 32-40 |
|
||||
| StRS-020 | SyRS-223 | SwRS-080 | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs`, Zeilen 32-40 |
|
||||
| StRS-020 | SyRS-224 | SwRS-080 | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs`, Zeilen 32-40 |
|
||||
| StRS-020 | SyRS-225 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-020 | SyRS-226 | SwRS-080 | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs`, Zeilen 32-40 |
|
||||
| StRS-020 | SyRS-227 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-021 | SyRS-066 | SwRS-064 | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| StRS-021 | SyRS-082 | SwRS-081 | `src/backend/Centron.Entities/Entities/Sales/Receipts/MasterDataLists/MasterDataListItem.cs`, Zeilen 42 und 63 |
|
||||
| StRS-021 | SyRS-089 | SwRS-087 | `src/apis/Centron.Api.Gls/CentronGlsErrors.cs` |
|
||||
| StRS-022 | SyRS-009 | SwRS-006 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 3707-3757 |
|
||||
| StRS-022 | SyRS-083 | SwRS-082 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9596-9605 |
|
||||
| StRS-023 | SyRS-084 | SwRS-083 | `src/backend/Centron.BL/Warehousing/InventoryManagement/InventoryBL.cs` und `InventoryNewBL.cs` |
|
||||
| StRS-024 | SyRS-085 | SwRS-084 | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs`, Zeilen 32-45 und 63-72 |
|
||||
| StRS-025 | SyRS-086 | SwRS-085 | `src/backend/Centron.Gateway/` mit den sieben EDI-Bereichen |
|
||||
| StRS-025 | SyRS-087 | SwRS-085 | `src/backend/Centron.Gateway/` mit den sieben EDI-Bereichen |
|
||||
| StRS-025 | SyRS-202 | — | `src/backend/Centron.Gateway/Concerto/ConcertoOrder.xsd` |
|
||||
| StRS-025 | SyRS-220 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-025 | SyRS-220 | SwRS-007 | `src/backend/Centron.DAO/` — die sieben `SaveReceipt*Repository`-Klassen mit `SynchronizeReceiptData` und `SynchronizeReceiptItemData` |
|
||||
| StRS-026 | SyRS-088 | SwRS-086 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 292-294 |
|
||||
| StRS-027 | SyRS-090 | SwRS-090 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeile 1119 (`excelExportManager.AddColumn(...)`) |
|
||||
| StRS-027 | SyRS-093 | SwRS-093 | `src/backend/Centron.BL/SystemInfoLogger.cs` |
|
||||
| StRS-027 | SyRS-094 | SwRS-090 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeile 1119 (`excelExportManager.AddColumn(...)`) |
|
||||
| StRS-027 | SyRS-219 | SwRS-002 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 7264-7285 |
|
||||
| StRS-027 | SyRS-224 | SwRS-080 | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs`, Zeilen 32-40 |
|
||||
| StRS-028 | SyRS-091 | SwRS-091 | `src/backend/Centron.Gateway/MspCollector/` |
|
||||
| StRS-029 | SyRS-092 | SwRS-092 | Die vier gleichnamigen Bereiche `MyDay` in Geschäftslogik, Entitäten, Steuerelementen und Portal |
|
||||
| StRS-029 | SyRS-229 | SwRS-051 | `src/backend/Centron.BL/Sales/Support/` mit den neun genannten Klassen |
|
||||
| StRS-029 | SyRS-230 | SwRS-092 | Die vier gleichnamigen Bereiche `MyDay` in Geschäftslogik, Entitäten, Steuerelementen und Portal |
|
||||
| StRS-029 | SyRS-231 | SwRS-170 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 125-127 |
|
||||
| StRS-030 | SyRS-100 | SwRS-100 | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, Zeilen 34-63 und 64-376 |
|
||||
| StRS-030 | SyRS-101 | SwRS-100 | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, Zeilen 34-63 und 64-376 |
|
||||
| StRS-030 | SyRS-195 | — | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs`, Zeilen 34-63 |
|
||||
| StRS-031 | SyRS-102 | SwRS-101 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 527, 700 und 1052 |
|
||||
| StRS-031 | SyRS-113 | SwRS-101 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 527, 700 und 1052 |
|
||||
| StRS-031 | SyRS-113 | SwRS-113 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 1001 und 1045-1055 |
|
||||
| StRS-031 | SyRS-148 | SwRS-148 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeile 383 |
|
||||
| StRS-031 | SyRS-233 | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 386-393 |
|
||||
| StRS-031 | SyRS-234 | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 396-398 |
|
||||
| StRS-032 | SyRS-110 | SwRS-110 | `src/backend/Centron.BL/ReportEngine/` mit den sechs Datenklassen und fünf Unterverzeichnissen |
|
||||
| StRS-033 | SyRS-111 | SwRS-111 | `src/centron/Centron.WPF.UI/Modules/Administration/ReportServer/ReportServerAppModuleController.cs`, Zeile 13 (`MainCategory => CentronModuleCategory.Automate`) |
|
||||
| StRS-034 | SyRS-112 | SwRS-112 | `src/backend/Centron.Entities/Entities/MassUpdate/` |
|
||||
| StRS-035 | SyRS-113 | SwRS-101 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 527, 700 und 1052 |
|
||||
| StRS-035 | SyRS-113 | SwRS-113 | `src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs`, Zeilen 1001 und 1045-1055 |
|
||||
| StRS-036 | SyRS-114 | SwRS-114 | `src/backend/Centron.BL/Sales/Support/HelpdeskReplacementBL.cs`, `AdressstammReplacementBL.cs`, `ExternalToolsReplacementBL.cs` |
|
||||
| StRS-037 | SyRS-115 | SwRS-115 | `src/backend/Centron.BL/IndexSearch/GermanAnalyzer.cs` |
|
||||
| StRS-038 | SyRS-116 | SwRS-116 | `src/backend/Centron.BL/Security/PdfSigningBL.cs` als einziger Inhalt des Verzeichnisses |
|
||||
| StRS-039 | SyRS-117 | SwRS-117 | `SSMS_DB_SCHEMA.sql`, `dbo.Sichbenu`, Spalte `[Unterschrift] [image] NULL` (Zeile 18528) |
|
||||
| StRS-040 | SyRS-118 | SwRS-118 | `src/nexus/CentronNexus/WebCart/` mit den paarweisen `.razor`/`.razor.css`-Dateien |
|
||||
| StRS-040 | SyRS-213 | SwRS-118 | `src/nexus/CentronNexus/WebCart/` mit den paarweisen `.razor`/`.razor.css`-Dateien |
|
||||
| StRS-041 | SyRS-119 | SwRS-119 | `src/centron/Centron.WPF.UI/Modules/Finances/AccountManagement/ReceiptControls/Converter/WebReceiptStateToDisplayTextConverter.cs` und `WebReceiptStateToImageConverter.cs` |
|
||||
| StRS-042 | SyRS-120 | SwRS-120 | `src/backend/Centron.BL/SelfCare/SelfCareBL.cs`, Zeilen 47-149 |
|
||||
| StRS-043 | SyRS-121 | SwRS-121 | `src/nexus/CentronNexus.OutlookAddIn/CentronNexus.OutlookAddIn.csproj` und `SharedResource.resx` |
|
||||
| StRS-044 | SyRS-122 | SwRS-035 | `DeveloperSecurity.cs` (Ablage laut `docs/reference/security/developer-security.md`) |
|
||||
| StRS-044 | SyRS-122 | SwRS-122 | `src/backend/Centron.BL/Mail/` und `src/backend/Centron.BL/MailScanner/MailScannerBL.cs` |
|
||||
| StRS-044 | SyRS-222 | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 273-275 |
|
||||
| StRS-045 | SyRS-123 | SwRS-123 | `src/backend/Centron.BL/Calendar/CalendarBL.cs` und `src/backend/Centron.BL/Sales/Calendar/ScheduleBL.cs` |
|
||||
| StRS-045 | SyRS-232 | — | `SSMS_DB_SCHEMA.sql`, Zeile 18994 (`CONSTRAINT [RequestProPerson] UNIQUE NONCLUSTERED`) |
|
||||
| StRS-046 | SyRS-124 | SwRS-124 | `src/backend/Centron.BL/Outlook/` und `src/backend/Centron.Entities/Entities/Outlook/` |
|
||||
| StRS-047 | SyRS-125 | SwRS-125 | Die vier Telefoniebereiche in Geschäftslogik, Entitäten, Steuerelementen und Portal |
|
||||
| StRS-048 | SyRS-126 | SwRS-126 | Die fünf genannten KI-Bereiche |
|
||||
| StRS-049 | SyRS-127 | SwRS-127 | `src/centron/Centron.WPF.UI/Modules/Survey/SurveyAppModuleController.cs`, Zeile 5 (`: ICentronAppModuleController, IOnlyOpenOnceModule`) |
|
||||
| StRS-050 | SyRS-128 | SwRS-128 | Die beiden getrennten Modulzweige `ExpectedEvents/` und `ExpectedEventsReporting/` |
|
||||
| StRS-051 | SyRS-065 | SwRS-063 | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs`, Zeilen 492, 522, 532, 765 |
|
||||
| StRS-051 | SyRS-130 | SwRS-130 | `src/backend/Centron.Entities/Entities/Sales/CustomerAssets/Contracts/ClickContracts/MasterDataListCompact.cs` und `MasterDataListItemsCompact.cs` |
|
||||
| StRS-052 | SyRS-131 | SwRS-131 | `src/backend/Centron.BL/Sales/Support/Escalation/EscalationBL.cs` |
|
||||
| StRS-053 | SyRS-132 | SwRS-132 | `src/backend/Centron.BL/CheckListArea/` gegenüber `src/backend/Centron.Entities/Entities/ChecklistArea/` |
|
||||
| StRS-053 | SyRS-203 | — | `src/backend/Centron.BL/ItPlanner/ChecklistVirtualObjectCategoryBL.cs` |
|
||||
| StRS-054 | SyRS-133 | SwRS-133 | `src/nexus/CentronNexus/Management/TicketPatterns/Components/TicketPatternTree.razor` und `TicketPatternCategoryEditor.razor` |
|
||||
| StRS-055 | SyRS-134 | SwRS-134 | `src/backend/Centron.BL/TaskManager/` und `src/backend/Centron.BL/ToDoArea/` |
|
||||
| StRS-056 | SyRS-135 | SwRS-135 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8846-8859 |
|
||||
| StRS-057 | SyRS-136 | SwRS-136 | `src/nexus/CentronNexus/ProductionOrderManagement/Model/` neben `src/backend/Centron.Entities/Entities/Production/` |
|
||||
| StRS-057 | SyRS-227 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-058 | SyRS-137 | SwRS-137 | `src/centron/Centron.WPF.UI/Modules/Global/VideoPortal/VideoPortalAppModuleController.cs`, Zeile 16 (`public string Description => null;`) |
|
||||
| StRS-059 | SyRS-138 | SwRS-138 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 371-378 |
|
||||
| StRS-060 | SyRS-139 | SwRS-139 | `src/centron/Centron.WPF.UI/Modules/Purchasing/TravelExpense/TravelExpenseAppModuleController.cs` |
|
||||
| StRS-061 | SyRS-006 | SwRS-003 | `src/backend/Centron.Interfaces/Sales/Receipts/ReceiptState.cs`, Zeilen 6-27 |
|
||||
| StRS-061 | SyRS-140 | SwRS-140 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 8912, 8940 und im Zahlungskonditionsblock |
|
||||
| StRS-062 | SyRS-141 | SwRS-141 | `src/apis/Centron.APIs.FinAPI/` mit `Requests/`, `Responses/`, `IFinApiClient.cs` |
|
||||
| StRS-062 | SyRS-218 | SwRS-072 | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs`, Zeilen 221, 224, 227, 230 |
|
||||
| StRS-063 | SyRS-142 | SwRS-142 | `src/backend/Centron.BL/Sales/Receipts/ArticleSearch/` mit den drei gleichnamig benannten Anbieterklassen |
|
||||
| StRS-063 | SyRS-223 | SwRS-080 | `src/backend/Centron.BL/Warehousing/StockManagement/ArticleStockBL.cs`, Zeilen 32-40 |
|
||||
| StRS-064 | SyRS-143 | SwRS-143 | `src/webservice/Centron.Controllers/Controllers/v1/Integrations/DocBeeConnectorConfigurationController.cs` und `src/webservice/Centron.Controllers/Controllers/v1/DataExchange/DocBeeTicketTemplatesController.cs` |
|
||||
| StRS-065 | SyRS-144 | SwRS-144 | `src/backend/Centron.BL/DataExchange/EDI/` und `src/backend/Centron.BL/EDI/` |
|
||||
| StRS-066 | SyRS-145 | SwRS-145 | `src/backend/Centron.BL/Notifications/` und `src/backend/Centron.BL/NexusNotifications/` |
|
||||
| StRS-066 | SyRS-235 | SwRS-145 | `src/backend/Centron.BL/Notifications/` und `src/backend/Centron.BL/NexusNotifications/` |
|
||||
| StRS-067 | SyRS-146 | SwRS-146 | `docs/reference/database/script-rules.md`, Abschnitt „Standard Audit Columns" |
|
||||
| StRS-068 | SyRS-147 | SwRS-114 | `src/backend/Centron.BL/Sales/Support/HelpdeskReplacementBL.cs`, `AdressstammReplacementBL.cs`, `ExternalToolsReplacementBL.cs` |
|
||||
| StRS-068 | SyRS-147 | SwRS-147 | `src/backend/Centron.Entities/Entities/ExternalTools/` |
|
||||
| StRS-069 | SyRS-148 | SwRS-148 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeile 383 |
|
||||
| StRS-070 | SyRS-150 | SwRS-036 | `.editorconfig`, Abschnitt `[*.{cs,xaml}]` mit `charset = utf-8-bom` |
|
||||
| StRS-070 | SyRS-150 | SwRS-150 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 164-165, 202, 215 |
|
||||
| StRS-071 | SyRS-151 | SwRS-014 | `src/backend/Centron.DAO/Mappings/Administration/AppUserMaps.cs`, Zeilen 19-32 |
|
||||
| StRS-071 | SyRS-151 | SwRS-015 | `src/backend/Centron.Entities/BaseEntity.cs`, `BaseLongEntity.cs`, `PersistedEntity.cs`, `PersistedLongEntity.cs` |
|
||||
| StRS-071 | SyRS-151 | SwRS-016 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 73-85 und 162-166 |
|
||||
| StRS-071 | SyRS-151 | SwRS-017 | `src/centron/Centron.WPF.UI/Modules/Helpdesk/ExpectedEvents/Controller/ExpectedEventsAppModuleController.cs`, `CreateModuleInstance` |
|
||||
| StRS-071 | SyRS-151 | SwRS-018 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 7292-7307 |
|
||||
| StRS-071 | SyRS-151 | SwRS-022 | `src/backend/Centron.BL/WebServices/ObjectMapperConfiguration/AppUserConfiguration.cs`, Zeile 18 |
|
||||
| StRS-071 | SyRS-151 | SwRS-023 | `src/shared/Centron.Core/Guard.cs` |
|
||||
| StRS-071 | SyRS-151 | SwRS-151 | `src/centron/Centron.WPF.UI/Services/Logics/TwoFactorAuthenticator/` mit allen drei Dateien |
|
||||
| StRS-071 | SyRS-151 | SwRS-165 | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeile 6 (`using Centron.Core;`) und `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeile 19 (`using Centron.Core.Utils;`) |
|
||||
| StRS-071 | SyRS-211 | SwRS-151 | `src/centron/Centron.WPF.UI/Services/Logics/TwoFactorAuthenticator/` mit allen drei Dateien |
|
||||
| StRS-072 | SyRS-152 | SwRS-152 | `docker/Dockerfile`, Zeilen 1-11 und 32-34 |
|
||||
| StRS-072 | SyRS-152 | SwRS-190 | `SSMS_DB_SCHEMA.sql`, `dbo.Sichbenu`, Spalten `[LoginTime] [datetime]`, `[LastWebLogin] [datetime]`, `[LetzKennAend] [datetime]`, `[LastTwoFactorValidatedAt] [datetime2](7)` |
|
||||
| StRS-072 | SyRS-181 | SwRS-181 | `docker/compose/appsettings.Production.json` mit neun Abschnitten |
|
||||
| StRS-072 | SyRS-193 | SwRS-181 | `docker/compose/appsettings.Production.json` mit neun Abschnitten |
|
||||
| StRS-072 | SyRS-194 | — | `src/nexus/CentronNexus.Host/Program.cs`, Zeile 145 |
|
||||
| StRS-072 | SyRS-196 | SwRS-019 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 7244-7255 |
|
||||
| StRS-072 | SyRS-196 | SwRS-053 | `docker/compose/appsettings.Production.json`, Abschnitt `TicketCache` |
|
||||
| StRS-072 | SyRS-197 | — | `docker/compose/compose.yaml`, `restart: on-failure` bei `webservice` und `nexus`, Dienst `db` ohne Volumenangabe |
|
||||
| StRS-072 | SyRS-205 | SwRS-190 | `SSMS_DB_SCHEMA.sql`, `dbo.Sichbenu`, Spalten `[LoginTime] [datetime]`, `[LastWebLogin] [datetime]`, `[LetzKennAend] [datetime]`, `[LastTwoFactorValidatedAt] [datetime2](7)` |
|
||||
| StRS-072 | SyRS-237 | — | `src/webservice/c-entron.misc.ConnectionManager/ConnectionManagerViewModel.cs`, Zeilen 919-924 |
|
||||
| StRS-073 | SyRS-153 | SwRS-153 | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs`, Zeilen 49-54 |
|
||||
| StRS-073 | SyRS-153 | SwRS-154 | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs`, Zeilen 82-98 |
|
||||
| StRS-073 | SyRS-153 | SwRS-155 | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs`, Zeilen 58-75 |
|
||||
| StRS-073 | SyRS-153 | SwRS-199 | `src/backend/Centron.BL/Administration/Scripts/ScriptMethods/Scripts/ScriptMethod11152.cs` Zeilen 53 und 144 sowie sieben weitere Skripte mit identischer Zuweisung |
|
||||
| StRS-073 | SyRS-154 | SwRS-153 | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs`, Zeilen 49-54 |
|
||||
| StRS-074 | SyRS-154 | SwRS-153 | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs`, Zeilen 49-54 |
|
||||
| StRS-075 | SyRS-020 | SwRS-021 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 47-173 |
|
||||
| StRS-075 | SyRS-036 | SwRS-033 | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, Zeilen 166-170 |
|
||||
| StRS-075 | SyRS-036 | SwRS-178 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 70-84 und 100-106 |
|
||||
| StRS-075 | SyRS-037 | SwRS-033 | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, Zeilen 166-170 |
|
||||
| StRS-075 | SyRS-037 | SwRS-156 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 276-284 |
|
||||
| StRS-075 | SyRS-092 | SwRS-092 | Die vier gleichnamigen Bereiche `MyDay` in Geschäftslogik, Entitäten, Steuerelementen und Portal |
|
||||
| StRS-075 | SyRS-155 | SwRS-156 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 276-284 |
|
||||
| StRS-075 | SyRS-178 | SwRS-032 | `src/webservice/Centron.Controllers/Controllers/Unversioned/JwtAuthController.cs`, Zeilen 25-39 |
|
||||
| StRS-075 | SyRS-178 | SwRS-178 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 70-84 und 100-106 |
|
||||
| StRS-076 | SyRS-019 | SwRS-020 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 497-527 |
|
||||
| StRS-076 | SyRS-156 | SwRS-157 | `src/webservice/Centron.Controllers/Controllers/v1/Administration/AccessTokensController.cs`, Zeilen 11-16 und 30-38 |
|
||||
| StRS-076 | SyRS-157 | SwRS-157 | `src/webservice/Centron.Controllers/Controllers/v1/Administration/AccessTokensController.cs`, Zeilen 11-16 und 30-38 |
|
||||
| StRS-077 | SyRS-158 | SwRS-158 | `src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs`, Zeilen 72-73 |
|
||||
| StRS-078 | SyRS-159 | SwRS-093 | `src/backend/Centron.BL/SystemInfoLogger.cs` |
|
||||
| StRS-078 | SyRS-159 | SwRS-159 | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeile 19 und `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeile 54 |
|
||||
| StRS-079 | SyRS-160 | SwRS-053 | `docker/compose/appsettings.Production.json`, Abschnitt `TicketCache` |
|
||||
| StRS-079 | SyRS-160 | SwRS-160 | `src/webservice/Centron.Host/AspNetCore/HostedServices/ManagedBackgroundService.cs` |
|
||||
| StRS-080 | SyRS-007 | SwRS-004 | `src/backend/Centron.DAO/` — `AssetHeadDAO.SaveAssetVersion` mit `DoGetFieldList()` |
|
||||
| StRS-080 | SyRS-007 | SwRS-161 | `src/backend/Centron.Interfaces/CentronObjectKindNumeric.cs` |
|
||||
| StRS-080 | SyRS-011 | SwRS-010 | `src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs`, Zeilen 95-111 |
|
||||
| StRS-080 | SyRS-038 | SwRS-033 | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs`, Zeilen 166-170 |
|
||||
| StRS-080 | SyRS-038 | SwRS-034 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 21-42 |
|
||||
| StRS-080 | SyRS-146 | SwRS-146 | `docs/reference/database/script-rules.md`, Abschnitt „Standard Audit Columns" |
|
||||
| StRS-080 | SyRS-161 | SwRS-146 | `docs/reference/database/script-rules.md`, Abschnitt „Standard Audit Columns" |
|
||||
| StRS-080 | SyRS-161 | SwRS-161 | `src/backend/Centron.Interfaces/CentronObjectKindNumeric.cs` |
|
||||
| StRS-080 | SyRS-161 | SwRS-162 | `src/backend/Centron.BL/ChangeTracking/` und `src/backend/Centron.Entities/Entities/ChangeTracking/` |
|
||||
| StRS-080 | SyRS-191 | SwRS-161 | `src/backend/Centron.Interfaces/CentronObjectKindNumeric.cs` |
|
||||
| StRS-081 | SyRS-170 | SwRS-170 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 125-127 |
|
||||
| StRS-082 | SyRS-171 | SwRS-171 | `src/backend/Centron.BL/Finances/ProductLifecycleBL.cs` |
|
||||
| StRS-083 | SyRS-172 | SwRS-172 | `src/shared/Centron.Controls/AccountContracts/` |
|
||||
| StRS-084 | SyRS-172 | SwRS-172 | `src/shared/Centron.Controls/AccountContracts/` |
|
||||
| StRS-084 | SyRS-173 | SwRS-173 | `src/backend/Centron.BL/CustomerArea/` und `src/backend/Centron.BL/Accounts/` |
|
||||
| StRS-085 | SyRS-174 | SwRS-164 | `src/shared/Centron.Controls/` mit den genannten Bereichen |
|
||||
| StRS-085 | SyRS-174 | SwRS-174 | Die drei genannten Bereiche |
|
||||
| StRS-086 | SyRS-175 | SwRS-175 | `src/backend/Centron.BL/Warehousing/CostCenterBL.cs` und `CostObjectBL.cs` |
|
||||
| StRS-087 | SyRS-176 | SwRS-176 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, `UpdateCurrencyFactor` (Zeilen 8359-8370) |
|
||||
| StRS-088 | SyRS-177 | SwRS-177 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 8872 |
|
||||
| StRS-088 | SyRS-221 | SwRS-177 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeile 8872 |
|
||||
| StRS-089 | SyRS-178 | SwRS-032 | `src/webservice/Centron.Controllers/Controllers/Unversioned/JwtAuthController.cs`, Zeilen 25-39 |
|
||||
| StRS-089 | SyRS-178 | SwRS-178 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 70-84 und 100-106 |
|
||||
| StRS-090 | SyRS-179 | SwRS-179 | `src/backend/Centron.BL/TradePool/Core/` und `src/backend/Centron.Gateway/Core/` |
|
||||
| StRS-091 | SyRS-180 | SwRS-161 | `src/backend/Centron.Interfaces/CentronObjectKindNumeric.cs` |
|
||||
| StRS-091 | SyRS-180 | SwRS-180 | `src/backend/Centron.BL/Sales/Receipts/ReceiptProgressionBL.cs`, Zeilen 20-52 und 75 |
|
||||
| StRS-092 | SyRS-181 | SwRS-181 | `docker/compose/appsettings.Production.json` mit neun Abschnitten |
|
||||
| StRS-092 | SyRS-198 | — | `README.md`, Abschnitte „2. Which components to use" und „3. Custom CSS" |
|
||||
| StRS-093 | SyRS-182 | SwRS-182 | `azure/build-pipeline.yml`, Zeilen 18-38 |
|
||||
| StRS-093 | SyRS-182 | SwRS-194 | `Centron.Api.docuFORM/Centron.Api.docuFORM.csproj` |
|
||||
| StRS-093 | SyRS-182 | SwRS-195 | `nugets/` mit 13 Paketen, darunter zwei FastReport-Hauptversionen |
|
||||
| StRS-094 | SyRS-183 | SwRS-163 | `tests/` mit den sieben Projektgruppen |
|
||||
| StRS-094 | SyRS-183 | SwRS-183 | `azure/` mit den sechs Pipeline-Dateien und dem Vorlagenverzeichnis |
|
||||
| StRS-094 | SyRS-183 | SwRS-192 | `Directory.Build.props`, Zeilen 40-43 |
|
||||
| StRS-094 | SyRS-183 | SwRS-193 | `azure/build-pipeline.yml`, `failTaskOnFailedTests: true` |
|
||||
| StRS-095 | SyRS-184 | SwRS-184 | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 397-404 |
|
||||
| StRS-096 | SyRS-066 | SwRS-064 | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| StRS-096 | SyRS-212 | SwRS-064 | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| StRS-097 | SyRS-066 | SwRS-064 | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| StRS-098 | SyRS-031 | SwRS-030 | `src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs`, Zeilen 51-66 und 94-155 |
|
||||
| StRS-098 | SyRS-031 | SwRS-031 | `src/backend/Centron.BL/Administration/Logins/TwoFactor/TwoFactorAuthBL.cs`, Zeilen 181-194 |
|
||||
| StRS-098 | SyRS-233 | — | `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs`, Zeilen 386-393 |
|
||||
| StRS-099 | SyRS-001 | SwRS-001 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 9598-9600 (`.OfType<IReceiptItemWithPickingAndMounting>()`) |
|
||||
| StRS-099 | SyRS-001 | SwRS-006 | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Zeilen 3707-3757 |
|
||||
| StRS-099 | SyRS-001 | SwRS-007 | `src/backend/Centron.DAO/` — die sieben `SaveReceipt*Repository`-Klassen mit `SynchronizeReceiptData` und `SynchronizeReceiptItemData` |
|
||||
| StRS-099 | SyRS-001 | SwRS-008 | `src/backend/Centron.Entities/Entities/DbEntities/` und `src/backend/Centron.DAO/Mappings/TemporaryEntities/` |
|
||||
| StRS-099 | SyRS-001 | SwRS-009 | `SSMS_DB_SCHEMA.sql` — die Tabellen `AngKopf`, `AufKopf`, `LiefKopf`, `RechKopf`, `VertragKopf`, `GutKopf`, `AbholKopf` und die zugehörigen Sichten |
|
||||
| StRS-100 | SyRS-130 | SwRS-130 | `src/backend/Centron.Entities/Entities/Sales/CustomerAssets/Contracts/ClickContracts/MasterDataListCompact.cs` und `MasterDataListItemsCompact.cs` |
|
||||
|
||||
## 3. Abdeckung der Ebenen
|
||||
|
||||
| Ebene | Anforderungen | in der Tabelle enthalten | ohne Verknüpfung zur nächsthöheren Ebene |
|
||||
|---|---|---|---|
|
||||
| StRS | 100 | 100 | entfällt (oberste Ebene) |
|
||||
| SyRS | 190 | 190 | 0 |
|
||||
| SwRS | 144 | 144 | 0 |
|
||||
+207
@@ -0,0 +1,207 @@
|
||||
# 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-26T13:22:48.5391662+02:00
|
||||
- **Endzeit:** 2026-08-26T15:55:35.0007167+02:00
|
||||
- **Dauer gesamt:** 2:32:46 (`duration_ms` 2:32:44; API: 2:27:51)
|
||||
— **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:** 4.4.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` 77.289.201 Tokens (99.99 %), `claude-haiku-4-5-20251001` 6.967 Tokens (0.01 %)
|
||||
- **Kontrolle Modell:** bestanden – ausschließlich das angeforderte Modell plus Haiku als zulässiger interner Hilfsaufruf
|
||||
- **Effort:** `max` (per `--effort max` gesetzt)
|
||||
- **Laufverzeichnis-ID:** `v4.4.0-37c5`
|
||||
- **Ablage:** `Iteration 3/claude-opus-5/solo/max/`
|
||||
- **Parallele Läufe:** **ja** – zeitgleich liefen:
|
||||
- `Iteration 3/claude-opus-5/solo/max/02_Lauf_2026-08-26_132237_v4.4.0-a8f5`
|
||||
- `Iteration 3/claude-opus-5/solo/max/02_Lauf_2026-08-26_132237_v4.4.0-fcdf`
|
||||
- `Iteration 3/claude-sonnet-5/builtin/high/02_Lauf_2026-08-26_125032_v4.4.0-4048`
|
||||
- `Iteration 3/claude-sonnet-5/builtin/high/02_Lauf_2026-08-26_125032_v4.4.0-f8b4`
|
||||
- `Iteration 3/claude-sonnet-5/builtin/high/02_Lauf_2026-08-26_125032_v4.4.0-fb24`
|
||||
|
||||
Die Zeitangaben dieses Laufs sind daher **nicht** für Laufzeitvergleiche zu verwenden. Tokenverbrauch, Anforderungszahl, Belegkennzahlen und Denials bleiben unverzerrt.
|
||||
- **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 | 344 |
|
||||
| Output-Tokens | 673.633 (davon 39.455 Thinking-Tokens) |
|
||||
| Cache-Write-Tokens | 785.321 |
|
||||
| Cache-Read-Tokens | 75.536.248 |
|
||||
| Agent-Turns | 231 |
|
||||
|
||||
### Gesamtlauf inkl. Subagenten (`modelUsage`, abrechnungsrelevant)
|
||||
| Messgröße | `claude-opus-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|
|
||||
| Input-Tokens | 346 | 6.944 | 7.290 |
|
||||
| Output-Tokens | 673.635 | 23 | 673.658 |
|
||||
| Cache-Write-Tokens | 803.724 | 0 | 803.724 |
|
||||
| Cache-Read-Tokens | 75.811.496 | 0 | 75.811.496 |
|
||||
| **Tokens gesamt** | **77.289.201** | **6.967** | **77.296.168** |
|
||||
|
||||
**Tokens gesamt: 77.296.168** — 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 | 100 | 23,0 % |
|
||||
| SyRS | 190 | 43,8 % |
|
||||
| SwRS | 144 | 33,2 % |
|
||||
| **Gesamt** | **434** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 171 | 39,4 % |
|
||||
| Sicherheit | 78 | 18,0 % |
|
||||
| Daten | 75 | 17,3 % |
|
||||
| Schnittstelle | 62 | 14,3 % |
|
||||
| nicht-funktional | 48 | 11,1 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 945 |
|
||||
| davon `PRIMÄR` | 766 (81,1 %) |
|
||||
| davon `SEKUNDÄR` | 113 (12,0 %) |
|
||||
| davon `KONTEXT` | 66 (7,0 %) |
|
||||
| Belege je Anforderung (Median) | 2,0 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 434 (100,0 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 385 | 88,7 % |
|
||||
| workaround | 30 | 6,9 % |
|
||||
| sonderfall | 7 | 1,6 % |
|
||||
| veraltet | 12 | 2,8 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 400 | 92,2 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 34 | 7,8 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 86 | 19,8 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 48 | 11,1 % |
|
||||
|
||||
### 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** (137 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 434 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 434 von 434 mit Tracelinks (100,0 %) |
|
||||
|
||||
## Ergebnis
|
||||
- **Status:** erfolgreich (`is_error` = false, `subtype` = `success`, `stop_reason` = `end_turn`, `terminal_reason` = `completed`)
|
||||
- **Session-ID:** `57813485-54b0-4a1a-ad5f-4c9a84fb13ab`
|
||||
- **Permission-Denials:** 7 (5 × `Bash`, 2 × `PowerShell`) – **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:** 10 Dateien in `Ergebnisse\`:
|
||||
|
||||
| Datei | Größe |
|
||||
|---|---:|
|
||||
| `Analysebericht.md` | 112.975 B |
|
||||
| `Glossar.md` | 23.253 B |
|
||||
| `Hypothesen.md` | 57.210 B |
|
||||
| `StRS.md` | 193.855 B |
|
||||
| `SwRS.md` | 237.972 B |
|
||||
| `SyRS.md` | 337.376 B |
|
||||
| `Traceability.md` | 39.200 B |
|
||||
| `_p_StRS_2.md` | 0 B |
|
||||
| `_p_StRS_3.md` | 0 B |
|
||||
| `_p_StRS_4.md` | 0 B |
|
||||
|
||||
- **Root unverändert:** ja (zeilenendennormalisiert verglichen).
|
||||
- **Abschlusstext des Agenten:** siehe `RawResult.json` (`result`)
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Iteration 3 – Snapshot mit DB-Schema.** `SSMS_DB_SCHEMA.sql` (3.266.626 B, 76.793 Zeilen,
|
||||
1.558 Tabellen, 182 Views, 63 Prozeduren, 30 Funktionen, 134 Fremdschlüssel; SHA-256
|
||||
`ED7F2125…1FA8DB`) ist seit Commit `f349d189` Bestandteil des Untersuchungsgegenstands. Läufe der
|
||||
Iteration 2 hatten die Datei nicht – beide Iterationen sind **nicht poolbar**.
|
||||
|
||||
**2. Parallelbetrieb – Zeitangaben unbrauchbar, Verbrauchsgrößen gültig.** Wanduhrzeit,
|
||||
`duration_ms` und `duration_api_ms` sind verzerrt; Tokenverbrauch, Anforderungszahl,
|
||||
Belegkennzahlen und Denials nicht. Einziger gültiger Laufzeitmesspunkt aller drei Iterationen
|
||||
bleibt der serielle Lauf `084301_v4.2.0-d6f9` mit 45:04.
|
||||
|
||||
**3. CLI 2.1.246** statt der gegen 2.1.245 verifizierten Fassung.
|
||||
|
||||
**4. Einziger Lauf der Reihe mit 100 % Primärbelegquote.** Alle 434 Anforderungen tragen
|
||||
mindestens einen `PRIMÄR`-Beleg – 945 Belege insgesamt, Median 2,0. Kein anderer Lauf beider
|
||||
Iterationen erreicht diesen Wert (bisheriges Maximum 98,2 %).
|
||||
|
||||
**5. Bestätigt den Effort-Befund der Zelle.** Zusammen mit `a8f5` (Median 2,0) und `fcdf`
|
||||
(Median 3,0) liegen alle drei `max`-Läufe über der Belegdichte sämtlicher 44 `high`-Läufe, die
|
||||
durchgängig bei Median 1,0 lagen. Die Wirkung ist damit in der Zelle reproduziert, nicht nur
|
||||
einmal beobachtet.
|
||||
|
||||
**6. Ebenenverteilung mit Schwerpunkt System:** 100 StRS / 190 SyRS / 144 SwRS (43,8 % SyRS).
|
||||
Innerhalb der `max`-Zelle streut die Verteilung deutlich weniger als auf `high` – die drei Läufe
|
||||
liegen zwischen 23,0 % und 33,6 % StRS gegenüber 4,6 % bis 92,7 % über die `high`-Läufe.
|
||||
|
||||
**7. Drei leere Streudateien: `_p_StRS_2.md`, `_p_StRS_3.md`, `_p_StRS_4.md`,** alle 0 Byte, um
|
||||
14:46 angelegt und nie befüllt. Der Agent hat offenbar begonnen, `StRS.md` in Teilstücke zu
|
||||
zerlegen, und den Ansatz verworfen – `StRS.md` wurde danach als eine Datei fertiggestellt
|
||||
(193.855 B um 15:54). Sieben Denials, darunter Aufräumversuche, die von der Denylist gestoppt
|
||||
wurden; die leeren Dateien blieben deshalb liegen und werden bewusst nicht entfernt.
|
||||
|
||||
**8. Modellkontrolle bestanden** (nur `claude-opus-5` + Haiku), `spawned` = 0 – `solo`-Bedingung
|
||||
eingehalten. Mit 2:33 Laufzeit der längste Lauf der Versuchsreihe.
|
||||
+1
File diff suppressed because one or more lines are too long
+8759
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 | 100 | 23,0 % |
|
||||
| SyRS | 190 | 43,8 % |
|
||||
| SwRS | 144 | 33,2 % |
|
||||
| **Gesamt** | **434** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 171 | 39,4 % |
|
||||
| Sicherheit | 78 | 18,0 % |
|
||||
| Daten | 75 | 17,3 % |
|
||||
| Schnittstelle | 62 | 14,3 % |
|
||||
| nicht-funktional | 48 | 11,1 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 945 |
|
||||
| davon `PRIMÄR` | 766 (81,1 %) |
|
||||
| davon `SEKUNDÄR` | 113 (12,0 %) |
|
||||
| davon `KONTEXT` | 66 (7,0 %) |
|
||||
| Belege je Anforderung (Median) | 2,0 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 434 (100,0 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 385 | 88,7 % |
|
||||
| workaround | 30 | 6,9 % |
|
||||
| sonderfall | 7 | 1,6 % |
|
||||
| veraltet | 12 | 2,8 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 400 | 92,2 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 34 | 7,8 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 86 | 19,8 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 48 | 11,1 % |
|
||||
|
||||
### 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** (137 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 434 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 434 von 434 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\max\02_Lauf_2026-08-26_132237_v4.4.0-37c5\Ergebnisse\`.
|
||||
Verändere keine Dateien im Arbeitsverzeichnis (der analysierten Codebasis).
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T15:55:35.0007167+02:00
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T13:22:48.5391662+02:00
|
||||
+757
@@ -0,0 +1,757 @@
|
||||
# Analysebericht — Reverse Requirements Engineering c-entron ERP-Suite
|
||||
|
||||
**Untersuchungsgegenstand:** gesamte Codebasis im Arbeitsverzeichnis `C:\DEV\MasterArbeit\QuellCode\CentronERP`
|
||||
**Methode:** statische Analyse (Lesen, Suchen, Kommandozeile). Keine Ausführung, kein Datenbankzugriff, keine laufende Instanz.
|
||||
**Norm:** ISO/IEC/IEEE 29148:2018 (StRS / SyRS / SwRS), Qualitätsmerkmale nach ISO/IEC 25010.
|
||||
**Datum des Laufs:** 2026-08-26
|
||||
|
||||
---
|
||||
|
||||
## 0. Kennzahlen des Untersuchungsgegenstands
|
||||
|
||||
Alle Zahlen wurden per Kommandozeile über das Arbeitsverzeichnis ermittelt (Ausschluss von `bin/` und `obj/`):
|
||||
|
||||
| Kennzahl | Wert | Ermittlung |
|
||||
|---|---|---|
|
||||
| C#-Quelldateien unter `src/` | 14.312 | `find ./src -name "*.cs" -not -path "*/obj/*" -not -path "*/bin/*" \| wc -l` |
|
||||
| XAML-Dateien unter `src/` | 1.233 | analog |
|
||||
| Razor-Komponenten unter `src/` | 491 | analog |
|
||||
| Projektdateien in `Centron.sln` (`.csproj`/`.wixproj`) | 46 | `grep -oE '"[^"]+\.(csproj\|wixproj)"' Centron.sln \| sort -u \| wc -l` |
|
||||
| Tabellen im DB-Schema-Dump | 1.535 | `grep -c "^CREATE TABLE" SSMS_DB_SCHEMA.sql` |
|
||||
| Views | 153 | `grep -c "^CREATE VIEW"` |
|
||||
| Stored Procedures | 52 | `grep -c "^CREATE PROCEDURE"` |
|
||||
| Funktionen | 28 | `grep -c "^CREATE FUNCTION"` |
|
||||
| Fremdschlüssel | 134 | `grep -c "FOREIGN KEY"` |
|
||||
| CHECK-Constraints | 154 | `grep -c "CHECK CONSTRAINT\|CONSTRAINT.*CHECK"` |
|
||||
| UNIQUE-Indizes | 26 | `grep -c "CREATE UNIQUE"` |
|
||||
| Trigger | 0 | `grep -c "^CREATE TRIGGER"` |
|
||||
| Markdown-Entwicklerdokumente unter `docs/` | 44 | `find ./docs -name "*.md" \| wc -l` |
|
||||
|
||||
**Produkt- und Herstellerangabe** aus `Directory.Build.props`: `Product = NEXOWARE c-entron ERP`, `Company = NEXOWARE Systems GmbH`, Copyright-Zeitraum 2012–2026. Version laut `version.json`: `2.0.2611-alpha`.
|
||||
|
||||
---
|
||||
|
||||
## 1. Modulinventar (Schritt 0)
|
||||
|
||||
Das Inventar wurde **vor** der ersten Anforderung erstellt. Grundlage sind vier unabhängige Quellen:
|
||||
|
||||
1. `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs` — die registrierten fachlichen Module des WPF-Clients, dort bereits in Kommentar-Regionen fachlich gruppiert (`#region c-entron Module: Abrechnung`, `… Administration`, `… Adressen/CRM`, `… Automatisierung`, `… Buchhaltung/Finanzen`, `… Controlling/Analytics`, `… Einkauf`, `… Helpdesk`, `… Hilfe`, `… Logistik`, `… MyCentron`, `… Passwort Manager (obsolate)`, `… Produktion`, `… Stammdaten`, `… Verträge`).
|
||||
2. Die Ordnerstruktur von `src/backend/Centron.BL/` (90 fachliche Unterordner) für Server-seitige Domänen ohne eigenes Client-Modul.
|
||||
3. Die Projektliste aus `Centron.sln` für Dienste, Portale, externe API-Assemblies und Infrastruktur.
|
||||
4. `docs/getting-started/ai-codebase-navigation.md` für die Zuordnung Pfad → Rolle.
|
||||
|
||||
Das Inventar umfasst **135 Module**. Es ist die Bezugsgröße der Abdeckungstabelle in Abschnitt 2.
|
||||
|
||||
### 1.1 Vertrieb, Belegwesen, Verträge und Abrechnung
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-001 | Adressstamm (Konten, Kunden, Lieferanten) | `src/centron/Centron.WPF.UI/Modules/Finances/AccountManagement`, `src/backend/Centron.BL/Accounts` | Führt Geschäftspartner als Konto mit Kunden- und/oder Lieferantenrolle inkl. Adressen und Ansprechpartnern. |
|
||||
| M-002 | CRM / Kontakthistorie | `src/centron/Centron.WPF.UI/Modules/Finances/Crm`, `src/backend/Centron.BL/Sales/Customers/CRM` | Erfasst Aktivitäten, Tätigkeiten und Kontakthistorie zu Konten. |
|
||||
| M-003 | CRM-Projekte | `src/centron/Centron.WPF.UI/Modules/Finances/Projects`, `src/backend/Centron.BL/Sales/Customers/CrmProjects` | Bündelt Vertriebsvorgänge zu einem Kundenprojekt. |
|
||||
| M-004 | Kampagnen / Mailing | `src/centron/Centron.WPF.UI/Modules/Finances/Campaigns`, `src/backend/Centron.BL/Mailings` | Serienanschreiben und Kampagnensteuerung auf Kontobasis. |
|
||||
| M-005 | Lieferanten-Verträge (Account Contracts) | `src/centron/Centron.WPF.UI/Modules/Finances/Crm/AccountContracts` | Verwaltet Verträge, die das Unternehmen mit Lieferanten hält. |
|
||||
| M-006 | Stammblätter (Master Data Lists) | `src/centron/Centron.WPF.UI/Modules/Finances/MasterDataLists`, `src/backend/Centron.Entities/Entities/Sales/Receipts/MasterDataLists` | Führt Geräte-Stammblätter mit Seriennummern, überwiegend für Druck-/Kopiersysteme. |
|
||||
| M-007 | Produktlebenszyklus (PLM) | `src/centron/Centron.WPF.UI/Modules/PLM`, `.../Finances/ProductLifecycleManagement` | Verfolgt Lebenszyklusphasen von Produkten beim Kunden. |
|
||||
| M-008 | Audit / Umfragen (Survey) | `src/centron/Centron.WPF.UI/Modules/Survey` | Strukturierte Kundenbefragungen und Audits. |
|
||||
| M-009 | Belegwesen Verkauf | `src/centron/Centron.WPF.UI/Modules/Finances/Receipts`, `src/backend/Centron.BL/Sales/Receipts` | Angebot, Auftrag, Lieferschein, Rechnung, Gutschrift, Abholschein als gemeinsame Belegfamilie. |
|
||||
| M-010 | Belegkonditionen | `src/centron/Centron.WPF.UI/Modules/Administration/ReceiptConditions` | Pflegt Konditionsregeln, die auf Belege angewendet werden. |
|
||||
| M-011 | Vertragsverwaltung | `src/centron/Centron.WPF.UI/Modules/Finances/Contracts`, `src/backend/Centron.BL/Sales/Receipts/ContractLists` | Führt Verträge als Belegart mit Laufzeit, Intervall und Kontingent. |
|
||||
| M-012 | Vertragsabrechnung (Automated Billing) | `src/centron/Centron.WPF.UI/Modules/Finances/AutomatedBilling`, `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura` | Erzeugt turnusmäßig Rechnungen aus Verträgen. |
|
||||
| M-013 | Pauschalabrechnung (Flatrate Billing) | `src/centron/Centron.WPF.UI/Modules/Finances/FlatrateBilling` | Rechnet Pauschalprojekte unabhängig vom Einzelaufwand ab. |
|
||||
| M-014 | Vereinfachte Ticketabrechnung (Timer Billing) | `src/centron/Centron.WPF.UI/Modules/Finances/TimerBilling`, `src/backend/Centron.BL/Sales/CustomerAssets/TimerBilling` | Erzeugt Belege direkt aus erfassten Ticketzeiten. |
|
||||
| M-015 | Klick-Zählerverwaltung | `src/centron/Centron.WPF.UI/Modules/Finances/DeviceClickCounter` | Erfasst Zählerstände von Geräten als Grundlage der Klickabrechnung. |
|
||||
| M-016 | Provisionsauswertung und -schemas | `src/centron/Centron.WPF.UI/Modules/Finances/Receipts/Provision`, `src/backend/Centron.BL/Sales/Receipts/ReceiptProvision*` | Berechnet Vertriebsprovisionen nach Schema und Kundenzuordnung. |
|
||||
| M-017 | Vertragsauswertung | `src/centron/Centron.WPF.UI/Modules/Finances/ContractEvaluation2` | Wertet Verträge betriebswirtschaftlich aus. |
|
||||
| M-018 | Mahnwesen | `src/centron/Centron.WPF.UI/Modules/Finances/Dunning`, `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning` | Führt Mahnläufe über offene Rechnungen in bis zu drei Mahnstufen. |
|
||||
| M-019 | OPOS (offene Posten) | `src/centron/Centron.WPF.UI/Modules/Finances/Opos` | Zeigt und bearbeitet offene Posten. |
|
||||
| M-020 | Zahlungseingang | `src/centron/Centron.WPF.UI/Modules/Finances/Payments`, `src/backend/Centron.BL/Finances/IncomingPayments` | Verbucht Zahlungseingänge gegen Rechnungen. |
|
||||
| M-021 | SEPA / Zahlungsverkehr | `src/centron/Centron.WPF.UI/Modules/DataExchange/PaymentTransactions`, `src/backend/Centron.BL/DataExchange/PaymentTransactions` | Erzeugt SEPA-Lastschrift-Dateien aus Rechnungen. |
|
||||
| M-022 | Buchhaltungsexport / -import | `src/centron/Centron.WPF.UI/Modules/DataExchange/BookKeeping` | Übergibt Belegdaten an die Finanzbuchhaltung und liest OPOS zurück. |
|
||||
| M-023 | DATEV-Belegtransfer | `src/centron/Centron.WPF.UI/Modules/DataExchange/DatevOnline2020` | Überträgt Belege und Belegbilder an DATEV Online. |
|
||||
| M-024 | Kalkulation pro Filiale | `src/centron/Centron.WPF.UI/Modules/DataExchange/SupplierOrderPerBranch` | Verteilt Lieferantenbestellungen kalkulatorisch auf Filialen. |
|
||||
| M-025 | Online-Banking (finAPI) | `src/centron/Centron.WPF.UI/Modules/OnlineBanking`, `src/backend/Centron.BL/Finances/OnlineBanking` | Ruft Kontoumsätze über eine Banking-Schnittstelle ab. |
|
||||
| M-026 | Kassenbuch / Belegerfassung | `src/centron/Centron.WPF.UI/Modules/Warehousing/OutcomingPayments`, `src/backend/Centron.BL/Sales/CashBooks` | Erfasst Barzahlungen und Ausgangsbelege. |
|
||||
| M-027 | Einkauf / Bestellwesen | `src/centron/Centron.WPF.UI/Modules/Purchasing`, `src/backend/Centron.BL/Purchasing` | Anfrage, Bestellung, Wareneingang, Lieferantengutschrift. |
|
||||
| M-028 | Bestellvorschlagsliste | `src/centron/Centron.WPF.UI/Modules/Purchasing/OrderSuggestionList` | Leitet Bestellvorschläge aus Bedarf und Bestand ab. |
|
||||
| M-029 | EDI-Verwaltung | `src/centron/Centron.WPF.UI/Modules/Purchasing/EDIManagement`, `src/backend/Centron.BL/EDI` | Steuert den elektronischen Belegaustausch mit Distributoren. |
|
||||
| M-030 | Wareneingang / WE-Kalkulation | `src/centron/Centron.WPF.UI/Modules/Finances/Receipts/SupplierReceiptDocuments` | Importiert und kalkuliert Lieferantenbelege. |
|
||||
|
||||
### 1.2 Logistik, Artikel und Produktion
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-031 | Artikelverwaltung | `src/centron/Centron.WPF.UI/Modules/Warehousing/ArticleManagement`, `src/backend/Centron.BL/Warehousing/ArticleBL.cs` | Führt Artikelstamm mit Preisen, Einheiten und Warengruppen. |
|
||||
| M-032 | Artikelimport | `src/centron/Centron.WPF.UI/Modules/Warehousing/ArticleImport`, `src/backend/Centron.BL/Warehousing/ArticleManagement/ArticleImportBL.cs` | Importiert Artikel- und Preisdaten von Distributoren. |
|
||||
| M-033 | Warengruppenverwaltung | `src/centron/Centron.WPF.UI/Modules/Warehousing/MaterialGroupManagement` | Klassifiziert Artikel in Warengruppen. |
|
||||
| M-034 | Artikeleinheiten | `src/centron/Centron.WPF.UI/Modules/Warehousing/ArticleUnitManagement`, `.../Warehousing/ArticleUnitBL.cs` | Pflegt Mengeneinheiten und Umrechnungen. |
|
||||
| M-035 | Barcode- und Seriennummernverwaltung | `src/centron/Centron.WPF.UI/Modules/Warehousing/BarcodeManagement`, `src/backend/Centron.BL/Warehousing/BarcodeBL.cs` | Verwaltet Seriennummern/Barcodes und ihre Zustände. |
|
||||
| M-036 | Lagerbestandsführung | `src/backend/Centron.BL/Warehousing/StockManagement`, `src/backend/Centron.BL/Logistics/Warehousing/StockBL.cs` | Führt Bestände je Lager, Lagerort und Nebenlager. |
|
||||
| M-037 | Inventur | `src/centron/Centron.WPF.UI/Modules/Warehousing/Inventory`, `src/backend/Centron.BL/Warehousing/InventoryManagement` | Zählvorgänge, Lagerabschluss, Inventurdifferenzen. |
|
||||
| M-038 | Kommissionierung | `src/centron/Centron.WPF.UI/Modules/Warehousing/Commissioning`, `src/backend/Centron.BL/Warehousing/CommissioningManagement` | Steuert Kommissionierung von Aufträgen. |
|
||||
| M-039 | Logistik / Versand | `src/centron/Centron.WPF.UI/Modules/Logistic` | Versandarten, Versanddienstleister, Warenversandbestätigung. |
|
||||
| M-040 | Produktion | `src/centron/Centron.WPF.UI/Modules/Production`, `src/backend/Centron.BL/Production` | Maschinenverwaltung und Produktionsaufträge. |
|
||||
| M-041 | Kostenträger / Kostenstellen | `src/centron/Centron.WPF.UI/Modules/PayersAndCostCenter`, `src/backend/Centron.BL/Warehousing/CostCenterBL.cs` | Führt Kostenstellen und Kostenträger als Stammdaten. |
|
||||
| M-042 | Kontenrahmen | `src/centron/Centron.WPF.UI/Modules/Warehousing/AccountSystems`, `src/backend/Centron.BL/Administration/BookKeepingAccountSystems` | Bildet Buchhaltungskontenrahmen ab. |
|
||||
| M-043 | Mehrwertsteuer | `src/backend/Centron.BL/Warehousing/TaxBL.cs`, Tabelle `dbo.MwstSatz` | Pflegt Steuersätze je Land inkl. Erlös-/Aufwandskonten. |
|
||||
| M-044 | Aufschläge Stundensätze | `src/centron/Centron.WPF.UI/Modules/Administration/HourlySurchargeRates`, `src/backend/Centron.BL/Sales/HourlySurchargeRatesBL` | Zeitabhängige Zuschläge auf Stundensätze. |
|
||||
| M-045 | Projektpreis-Import | `src/centron/Centron.WPF.UI/Modules/ProjectPriceImport` | Importiert projektbezogene Sonderpreise. |
|
||||
| M-046 | Sonderpreis-Importe für Verträge | `src/centron/Centron.WPF.UI/Modules/Sales/SpecialArticleImport`, `.../SpecialArticleToContractImport` | Statischer und dynamischer Import von Sonderpreisen in Verträge. |
|
||||
| M-047 | Produkt-/Kundenmatrix | `src/centron/Centron.WPF.UI/Modules/Sales/ProductMatrix`, `src/backend/Centron.BL/ProductMatrix` | Ordnet Produkte Kundensegmenten zu. |
|
||||
| M-048 | TradePool | `src/backend/Centron.BL/TradePool` | Importiert und durchsucht einen überbetrieblichen Artikelpool. |
|
||||
| M-049 | Gutschein-/Voucher-Verwaltung | `src/backend/Centron.BL/VoucherManagement` | Verwaltet ausgegebene und eingelöste Gutscheine. |
|
||||
|
||||
### 1.3 Service, Helpdesk und Projekte
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-050 | Helpdesk / Ticketing | `src/centron/Centron.WPF.UI/Modules/Helpdesk`, `src/backend/Centron.BL/Sales/Support` | Zentrale Ticketbearbeitung mit Status, Priorität, Kategorie, Typ. |
|
||||
| M-051 | Ticket-Zeiterfassung | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs` | Erfasst berechenbare und nicht berechenbare Zeiten am Ticket. |
|
||||
| M-052 | Checklisten | `src/centron/Centron.WPF.UI/Modules/Helpdesk/CentronChecklist`, `src/backend/Centron.BL/CheckListArea` | Vorlagenbasierte Checklisten an Tickets. |
|
||||
| M-053 | Ticketprozess-Vorlagen (C-FLOW) | `src/centron/Centron.WPF.UI/Modules/Helpdesk/TicketProcessTemplates`, `src/backend/Centron.BL/Processes` | Prozessvorlagen mit Schritten und Bindungen. |
|
||||
| M-054 | Erwartete Events | `src/centron/Centron.WPF.UI/Modules/Helpdesk/ExpectedEvents`, `src/backend/Centron.BL/ExpectedEvents` | Überwacht erwartete Ereignisse und protokolliert Abweichungen. |
|
||||
| M-055 | Taskmanagement | `src/centron/Centron.WPF.UI/Modules/Helpdesk/TaskManagement`, `src/backend/Centron.BL/TaskManager` | Aufgabenverwaltung quer zu Tickets. |
|
||||
| M-056 | Ticketprojekte / Projektverwaltung | `src/centron/Centron.WPF.UI/Modules/ProjectManagement`, `src/backend/Centron.BL/TicketProjects` | Bündelt Tickets zu Projekten. |
|
||||
| M-057 | RMA / Werkstatt | `src/centron/Centron.WPF.UI/Modules/Rma`, `src/backend/Centron.BL/CustomerArea/RmaBL.cs` | Rücksende- und Reparaturabwicklung. |
|
||||
| M-058 | QM-Meldungen | `src/centron/Centron.WPF.UI/Modules/QM`, `src/backend/Centron.Interfaces/QM` | Erfasst Qualitätsmeldungen. |
|
||||
| M-059 | Eskalationen | `src/backend/Centron.BL/Sales/Support/Escalation` | Eskalationstypen und -regeln für Tickets. |
|
||||
| M-060 | SelfCare-Formulare | `src/backend/Centron.BL/SelfCare`, `src/webservice/Centron.Controllers/Controllers/v1/SelfCare` | Kundenformulare, die Tickets und Folgeaktionen auslösen. |
|
||||
| M-061 | Externer Helpdesk | `src/backend/Centron.BL/ExternalHelpdesk` | Anbindung fremder Helpdesk-Systeme. |
|
||||
| M-062 | Geräte / Assets am Konto | `src/backend/Centron.BL/Devices`, `src/backend/Centron.Entities/Entities/Devices` | Führt kundenseitige Geräte als eigenständige Objekte. |
|
||||
| M-063 | Asset-/DocuBoard-Verwaltung | `src/backend/Centron.BL/DocuBoard`, Tabellen `AssetManagement*` | Inventarisiert IT-Systeme, Anwendungen, Checks und Abhängigkeiten. |
|
||||
| M-064 | IT-Planner | `src/backend/Centron.BL/ItPlanner` | Kategorien virtueller Objekte für IT-Planung. |
|
||||
|
||||
### 1.4 Arbeitsplatz, Zusammenarbeit und Kommunikation
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-065 | Kalender und Termine | `src/centron/Centron.WPF.UI/Modules/Calendar`, `src/backend/Centron.BL/Sales/Calendar` | Termine, Vertretungen, Darstellungen. |
|
||||
| M-066 | Kalender-/Exchange-Synchronisation | `src/backend/Centron.BL/Sales/Calendar/ScheduleBL.cs`, `docs/features/exchange-sync-bugprotokoll.md` | Gleicht Termine mit Exchange/Outlook ab. |
|
||||
| M-067 | Mein Tag (MyDay) | `src/centron/Centron.WPF.UI/Modules/MyCentron/MyDay`, `src/backend/Centron.BL/MyDay` | Tagesplanung und Arbeitszeitübersicht je Mitarbeiter. |
|
||||
| M-068 | Mitarbeiterauslastung | `src/centron/Centron.WPF.UI/Modules/MyCentron/MyDay/EmployeeOverview` | Auslastungssicht über Mitarbeiter und Filialen. |
|
||||
| M-069 | Todo-Liste | `src/centron/Centron.WPF.UI/Modules/MyCentron/TodoList`, `src/backend/Centron.BL/ToDoArea` | Persönliche und objektbezogene Aufgaben. |
|
||||
| M-070 | Telefonie / TAPI | `src/centron/Centron.WPF.UI/Modules/MyCentron/Telephony`, `src/backend/Centron.BL/Tapi` | Anrufprotokoll, Rufnummernauflösung, TAPI-Anbindung. |
|
||||
| M-071 | Chat | `src/backend/Centron.BL/Chats`, `src/webservice/Centron.Host/RealTimeServices/ChatHub.cs` | Interner Chat mit Objektbezug. |
|
||||
| M-072 | Benachrichtigungen | `src/backend/Centron.BL/Notifications`, `src/backend/Centron.BL/NexusNotifications` | System- und Nutzerbenachrichtigungen inkl. Push in das Web-Portal. |
|
||||
| M-073 | Mailversand und Mailvorlagen | `src/backend/Centron.BL/Mail`, `src/centron/Centron.WPF.UI/Modules/Administration/MailTemplates` | Versendet Mails aus Belegen, Tickets und Kampagnen. |
|
||||
| M-074 | Mail-Scanner | `src/backend/Centron.BL/MailScanner` | Liest Postfächer aus und ordnet Mails Objekten zu. |
|
||||
| M-075 | Outlook-Integration | `src/backend/Centron.BL/Outlook`, `src/nexus/CentronNexus.OutlookAddIn` | Outlook-Add-In für Belege, Tickets, Kontakte. |
|
||||
| M-076 | Textbausteine | `src/centron/Centron.WPF.UI/Modules/Administration/TextBlockManagement`, `src/backend/Centron.BL/TextModuleArea` | Wiederverwendbare Textbausteine und Anrede-/Grußformeln. |
|
||||
| M-077 | Dashboard | `src/centron/Centron.WPF.UI/Modules/Dashboard`, `.../MyCentron/Dashboard` | Konfigurierbare Kennzahlenübersicht. |
|
||||
| M-078 | KI-Assistent / AI-Chat | `src/centron/Centron.WPF.UI/Modules/ArtificialIntelligence`, `src/backend/Centron.BL/ArtificialIntelligence` | KI-gestützte Textbewertung, Angebotspositionen, Chat. |
|
||||
| M-079 | Social Media | `src/backend/Centron.BL/SocialMedia` | Verknüpft Social-Media-Konten und -Aktivitäten mit Personen. |
|
||||
| M-080 | Video-Portal | `src/backend/Centron.BL/VideoPortal`, `src/centron/Centron.WPF.UI/Modules/Global/VideoPortal` | Stellt Schulungsvideos im Client bereit. |
|
||||
| M-081 | Tags | `src/backend/Centron.BL/Tags` | Freie Verschlagwortung von Objekten. |
|
||||
| M-082 | Kurz-URLs und WebLinks | `src/backend/Centron.BL/Urls`, `src/backend/Centron.BL/WebLinks` | Erzeugt aufrufbare Links mit hinterlegter Aktion. |
|
||||
|
||||
### 1.5 Auswertung, Reporting und Controlling
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-083 | Statistik / Analytics | `src/centron/Centron.WPF.UI/Modules/Statistics`, `src/backend/Centron.BL/Statistics` | Umsatz-, Vertriebs- und Servicestatistiken. |
|
||||
| M-084 | Leistungsnachweise | `src/centron/Centron.WPF.UI/Modules/Statistics/EmployeeAnalytics` | Leistungsnachweise je Mitarbeiter. |
|
||||
| M-085 | Management Info | `src/centron/Centron.WPF.UI/Modules/Statistics/ManagementInfo` | Verdichtete Kennzahlen für die Geschäftsführung. |
|
||||
| M-086 | MSP-Auswertung, -Collector, -Dashboard | `src/centron/Centron.WPF.UI/Modules/Statistics/Msp*`, `src/backend/Centron.Gateway/MspCollector` | Sammelt und vergleicht Managed-Service-Lizenzen und -Nutzung. |
|
||||
| M-087 | Report-Engine und Reportverwaltung | `src/centron/Centron.WPF.UI/Modules/Reports`, `src/backend/Centron.BL/ReportEngine` | Definition, Vorschau, Druck und Export von Reports. |
|
||||
| M-088 | Reportserver | `src/centron/Centron.WPF.UI/Modules/Administration/ReportServer` | Zeitgesteuerter Reportversand. |
|
||||
| M-089 | Index-/Volltextsuche | `src/backend/Centron.BL/IndexSearch` | Baut und durchsucht Volltextindizes über Objekte und Dokumente. |
|
||||
| M-090 | Telemetrie | `src/backend/Centron.BL/Telemetry` | Zählt API- und KI-Werkzeugnutzung in Zeitfenstern. |
|
||||
|
||||
### 1.6 Administration, Sicherheit und Betrieb
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-091 | Rechteverwaltung | `src/centron/Centron.WPF.UI/Modules/Administration/RightsManagement`, `src/backend/Centron.BL/Administration/Rights` | Rechte, Gruppen, Zuordnungen, Rechteprotokoll. |
|
||||
| M-092 | Authentifizierung und Anmeldung | `src/backend/Centron.BL/Administration/Logins`, `.../Logins/Auth` | Anmeldung per Kennwort, Active Directory, OpenID Connect, Web-Konto. |
|
||||
| M-093 | Zwei-Faktor-Authentifizierung | `src/backend/Centron.BL/Administration/Logins/TwoFactor`, `src/backend/Centron.BL/TwoFactorAuthenticator` | TOTP-, Mail- und RADIUS-basierter zweiter Faktor. |
|
||||
| M-094 | Zugriffstoken (API-Token) | `src/backend/Centron.BL/Administration/AccessTokens` | Persönliche API-Token mit Ablauf, Sperre und Protokoll. |
|
||||
| M-095 | Lizenzverwaltung | `src/backend/Centron.BL/Administration/Licensing`, `src/backend/Centron.Interfaces/Administration/Logins/LicenseGuids.cs` | Prüft Featurelizenzen, Anzahl, Ablaufdatum und Version. |
|
||||
| M-096 | Mitarbeiterverwaltung / Personal | `src/centron/Centron.WPF.UI/Modules/Administration/EmployeeManagement`, `src/backend/Centron.BL/EmployeeArea` | Mitarbeiterstammdaten, Abteilungen, Skills, Einstellungen. |
|
||||
| M-097 | Mandanten und Filialen | `src/centron/Centron.WPF.UI/Modules/Administration/MandatorManagement`, `src/backend/Centron.BL/Administration/Company` | Mandanten, Filialen, Nummernkreise, Bankverbindungen. |
|
||||
| M-098 | Anwendungseinstellungen | `src/centron/Centron.WPF.UI/Modules/Administration/Settings`, `src/backend/Centron.BL/Administration/Settings` | Zentrale Einstellungen in `ApplicationSettings` und `Stammdat`. |
|
||||
| M-099 | Zusatzfelder (Custom Properties) | `src/centron/Centron.WPF.UI/Modules/Global/CustomProperties`, `src/backend/Centron.BL/Administration/Customization` | Kundenindividuelle Zusatzfelder je Modul. |
|
||||
| M-100 | Passwort-Manager / Zugangsverwaltung | `src/centron/Centron.WPF.UI/Modules/PasswordManager`, `src/backend/Centron.BL/PasswordManager`, `.../PasswordManagementArea` | Verwaltet Kundenzugangsdaten verschlüsselt inkl. Zugriffsprotokoll. |
|
||||
| M-101 | DSGVO / Datenschutz | `src/centron/Centron.WPF.UI/Modules/Administration/DSGVO`, `src/backend/Centron.BL/Administration/DataSecurity` | Auskunft, Löschung und Datenbankbereinigung nach DSGVO. |
|
||||
| M-102 | PDF-Signierung | `src/backend/Centron.BL/Security/PdfSigningBL.cs` | Signiert erzeugte PDF-Dokumente mit einem Zertifikat. |
|
||||
| M-103 | Dokumenten- und Dateiverwaltung | `src/backend/Centron.BL/Administration/FileManagement` | Verzeichnisse, Dokumente, geteilte Dokumente, EDI-Dokumente. |
|
||||
| M-104 | Datenbank-Skript-Engine | `src/backend/Centron.BL/Administration/Scripts` | Führt versionierte Migrationsskripte gegen die Datenbank aus. |
|
||||
| M-105 | SQL-Manager | `src/centron/Centron.WPF.UI/Modules/Administration/SqlManagers`, `src/backend/Centron.BL/Administration/SQLManagement` | Administrative Datenbankoperationen aus dem Client. |
|
||||
| M-106 | Protokollierung und LogViewer | `src/centron/Centron.WPF.UI/Modules/Administration/LogViewer`, `src/centron/Centron.WPF.UI/nlog.config` | Anwendungslogs erzeugen und einsehen. |
|
||||
| M-107 | c-entron Inspektor | `src/centron/Centron.WPF.UI/Modules/MyCentron/CentronInspectors` | Diagnosewerkzeug für Support und Entwicklung. |
|
||||
| M-108 | Massenupdates (Data Updater) | `src/centron/Centron.WPF.UI/Modules/Massenupdates`, `src/backend/Centron.BL/MassUpdate` | Massenhafte Preis- und Datenänderungen über Vorlagen. |
|
||||
| M-109 | Änderungsverfolgung | `src/backend/Centron.BL/ChangeTracking`, `src/backend/Centron.DAO/ChangeTracking` | Protokolliert Entitätsänderungen über NHibernate-Listener. |
|
||||
| M-110 | Länder und Bundesländer | `src/centron/Centron.WPF.UI/Modules/Administration/CountryManagement`, `src/backend/Centron.BL/CountryArea` | Länderstammdaten inkl. steuerlicher Zuordnung. |
|
||||
| M-111 | Externe Tools | `src/centron/Centron.WPF.UI/Modules/ExternalTool`, `src/backend/Centron.BL/ExternalToolsBL` | Startet externe Programme mit Kontextvariablen. |
|
||||
| M-112 | Objekt-Externreferenzen | `src/backend/Centron.BL/ObjectExternalReferences` | Verknüpft c-entron-Objekte mit IDs in Fremdsystemen. |
|
||||
|
||||
### 1.7 Dienste, Portale und Schnittstellen
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-113 | Legacy-REST-Webservice | `src/webservice/Centron.WebServices.Core`, `src/webservice/Centron.Host/Services` | Historisch gewachsener REST-Dienst mit `ICentronRestService`. |
|
||||
| M-114 | Moderne REST-API v1 | `src/webservice/Centron.Controllers` | Versionierte ASP.NET-Core-Controller mit Attribut-Autorisierung. |
|
||||
| M-115 | Web-Service-Hosting | `src/webservice/Centron.Host`, `.../Centron.Host.Console`, `.../Centron.Host.WindowsService`, `docker/` | Betrieb als Konsolenprozess, Windows-Dienst oder Container. |
|
||||
| M-116 | Verbindungsmanager | `src/webservice/c-entron.misc.ConnectionManager` | Konfiguriert Datenbank- und Dienstverbindungen. |
|
||||
| M-117 | Echtzeitdienste (SignalR) | `src/webservice/Centron.Host/RealTimeServices` | Hubs für Chat, Benachrichtigungen, Verfügbarkeit, TAPI. |
|
||||
| M-118 | Nexus ServiceBoard | `src/nexus/CentronNexus/ServiceBoard` | Web-Oberfläche für Servicemitarbeiter (Tickets, Kanban, Zeiten). |
|
||||
| M-119 | Nexus WebCart / Kundenportal | `src/nexus/CentronNexus/WebCart` | Shop und Portal für Endkunden mit Web-Konto. |
|
||||
| M-120 | Nexus WebOffer | `src/nexus/CentronNexus/WebOffer` | Web-Freigabe von Angeboten. |
|
||||
| M-121 | Nexus Dokumentensignatur | `src/nexus/CentronNexus/DocumentSigning` | Online-Freigabe und Signatur von Dokumenten. |
|
||||
| M-122 | Nexus Verwaltung und Einstellungen | `src/nexus/CentronNexus/Management`, `src/nexus/CentronNexus/Settings` | Web-Konten, Ticketvorlagen, Branding, Themes. |
|
||||
| M-123 | Web-Konten (WebAccount) | `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs` | Kundenzugänge mit eigenem Rechtemodell. |
|
||||
| M-124 | Externe Warenwirtschafts- und Bank-APIs | `src/apis/` (finAPI, GLS, Shipcloud, ITscope, Icecat, COP, EGIS, ebInterface), `Centron.Api.docuFORM` | Gekapselte Zugriffe auf Fremdsysteme. |
|
||||
| M-125 | Gateway / EDI-Konnektoren und E-Rechnung | `src/backend/Centron.Gateway`, `src/backend/Centron.BL/DataExchange/EDI` | Distributor-EDI, OpenTrans, ZUGFeRD/XRechnung, MSP-Collector, Online-Banking. |
|
||||
| M-126 | RMM-Anbindung (Riverbird) | `src/backend/Centron.BL/RiverDivo`, `src/centron/Centron.WPF.UI/Modules/DataExchange/Rmm` | Liefert Nutzungsdaten für die verbrauchsabhängige Vertragsabrechnung. |
|
||||
|
||||
### 1.8 Querschnittliche Bausteine
|
||||
|
||||
| ID | Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|---|---|---|---|
|
||||
| M-127 | Persistenz / ORM | `src/backend/Centron.DAO` | NHibernate-Session, Mappings, Repositories, benannte Abfragen. |
|
||||
| M-128 | Domänenmodell | `src/backend/Centron.Entities` | Entitäten und Web-Service-DTOs. |
|
||||
| M-129 | Basisbibliotheken | `src/backend/Centron.Common`, `src/shared/Centron.Core` | Kryptografie, Formatierung, Logging, Hilfsklassen. |
|
||||
| M-130 | UI-Bausteine | `src/shared/Centron.Controls`, `src/centron/Centron.WPF.UI.Extension` | Wiederverwendbare Steuerelemente und MVVM-Infrastruktur. |
|
||||
| M-131 | Lokalisierung | `**/Resources/LocalizedStrings*.resx`, `docs/guides/ui/localization.md` | Deutsch als Standardsprache, Englisch als Zusatzsprache. |
|
||||
| M-132 | Build, Auslieferung und Betrieb | `deployment/`, `azure/`, `.github/workflows/`, `docker/` | Installer, Pipelines, Container-Betrieb. |
|
||||
| M-133 | Testsuite | `tests/` | Unit-, Integrations-, End-to-End- und Playwright-Tests. |
|
||||
| M-134 | Mobile-Schnittstelle | `src/backend/Centron.BL/Mobile`, `src/backend/Centron.DAO/Mobile` | Verschlankte Datensicht für mobile Anwendungen. |
|
||||
| M-135 | Telekom D!VE | `src/backend/Centron.BL/DataExchange/TelekomDive`, `src/centron/Centron.WPF.UI/Modules/TelekomDive` | Anbindung an den Anbieterdienst Telekom D!VE über benannte Profile. |
|
||||
|
||||
> **Hinweis zur Inventarpflege:** Das Inventar wurde während der Analyse **ergänzt, aber nicht gekürzt**. Nach Durchsicht der Projektmappe kamen M-127 bis M-133 hinzu; während der Formalisierung kamen M-134 (Mobile-Schnittstelle, aufgefallen über `MobileBL` und `Centron.DAO/Mobile`) und M-135 (Telekom D!VE, aufgefallen über `TelekomDiveBL` und den gleichnamigen Modulordner) hinzu. Die Nummerierung ist stabil und wird in der Abdeckungstabelle unverändert übernommen.
|
||||
|
||||
---
|
||||
|
||||
## 2. Abdeckungstabelle
|
||||
|
||||
Jede Zeile des Modulinventars aus Abschnitt 1 erscheint hier genau einmal. Die Einstufung folgt der Anzahl der aus dem Modul erzeugten Anforderungen:
|
||||
|
||||
| Einstufung | Kriterium |
|
||||
|---|---|
|
||||
| `tief` | acht oder mehr Anforderungen; Regeln bis auf die durchsetzende Codestelle nachvollzogen |
|
||||
| `mittel` | drei bis sieben Anforderungen; Struktur, Datenmodell und mindestens eine durchgesetzte Regel belegt |
|
||||
| `flach` | eine oder zwei Anforderungen; Existenz, Zweck und ein tragendes Merkmal belegt |
|
||||
| `nicht analysiert` | keine Anforderung erzeugt |
|
||||
|
||||
**Ergebnis in Zahlen:** 5 Module `tief`, 79 Module `mittel`, 51 Module `flach`, **0 Module `nicht analysiert`**. Alle 135 Module tragen mindestens eine Anforderung; die Mindestabdeckung nach Schritt 0b ist damit erreicht.
|
||||
|
||||
| Modul | Bezeichnung | Abdeckung | Anzahl | Anforderungen |
|
||||
|---|---|---|---|---|
|
||||
| M-001 | Adressstamm (Konten, Kunden, Lieferanten) | mittel | 4 | StRS-011, SyRS-015, SwRS-015, SwRS-016 |
|
||||
| M-002 | CRM / Kontakthistorie | mittel | 3 | StRS-012, SyRS-016, SwRS-017 |
|
||||
| M-003 | CRM-Projekte | mittel | 3 | StRS-013, SyRS-017, SwRS-018 |
|
||||
| M-004 | Kampagnen / Mailing | mittel | 3 | StRS-014, SyRS-018, SwRS-019 |
|
||||
| M-005 | Lieferanten-Verträge | mittel | 3 | StRS-015, SyRS-019, SwRS-020 |
|
||||
| M-006 | Stammblätter | mittel | 3 | StRS-016, SyRS-020, SwRS-021 |
|
||||
| M-007 | Produktlebenszyklus (PLM) | mittel | 3 | StRS-018, SyRS-022, SwRS-023 |
|
||||
| M-008 | Audit / Umfragen | mittel | 3 | StRS-019, SyRS-023, SwRS-024 |
|
||||
| M-009 | Belegwesen Verkauf | tief | 30 | StRS-001, StRS-021, StRS-022, StRS-023, StRS-024, StRS-026, StRS-027, StRS-028, StRS-029, StRS-030, SyRS-001, SyRS-002, SyRS-025, SyRS-026, SyRS-027, SyRS-028, SyRS-030, SyRS-032, SyRS-033, SyRS-034, SwRS-001, SwRS-002, SwRS-026, SwRS-027, SwRS-028, SwRS-029, SwRS-031, SwRS-033, SwRS-034, SwRS-035 |
|
||||
| M-010 | Belegkonditionen | flach | 1 | SwRS-150 |
|
||||
| M-011 | Vertragsverwaltung | mittel | 3 | StRS-031, SyRS-036, SwRS-036 |
|
||||
| M-012 | Vertragsabrechnung (Automated Billing) | mittel | 7 | StRS-032, StRS-033, SyRS-037, SyRS-038, SwRS-037, SwRS-038, SwRS-039 |
|
||||
| M-013 | Pauschalabrechnung (Flatrate Billing) | mittel | 3 | StRS-036, SyRS-041, SwRS-042 |
|
||||
| M-014 | Vereinfachte Ticketabrechnung (Timer Billing) | mittel | 3 | StRS-037, SyRS-042, SwRS-043 |
|
||||
| M-015 | Klick-Zählerverwaltung | mittel | 3 | StRS-035, SyRS-040, SwRS-041 |
|
||||
| M-016 | Provisionsauswertung und -schemas | mittel | 4 | StRS-038, StRS-039, SyRS-043, SwRS-044 |
|
||||
| M-017 | Vertragsauswertung | mittel | 3 | StRS-040, SyRS-044, SwRS-045 |
|
||||
| M-018 | Mahnwesen | tief | 9 | StRS-041, StRS-042, StRS-025, SyRS-045, SyRS-046, SyRS-029, SwRS-046, SwRS-047, SwRS-030 |
|
||||
| M-019 | OPOS (offene Posten) | flach | 1 | SyRS-046 |
|
||||
| M-020 | Zahlungseingang | mittel | 3 | StRS-044, SyRS-048, SwRS-049 |
|
||||
| M-021 | SEPA / Zahlungsverkehr | mittel | 4 | StRS-045, StRS-046, SyRS-049, SwRS-050 |
|
||||
| M-022 | Buchhaltungsexport / -import | mittel | 3 | StRS-047, SyRS-050, SwRS-051 |
|
||||
| M-023 | DATEV-Belegtransfer | flach | 1 | StRS-048 |
|
||||
| M-024 | Kalkulation pro Filiale | flach | 1 | SwRS-056 |
|
||||
| M-025 | Online-Banking (finAPI) | mittel | 3 | StRS-050, SyRS-052, SwRS-053 |
|
||||
| M-026 | Kassenbuch / Belegerfassung | mittel | 3 | StRS-051, SyRS-053, SwRS-054 |
|
||||
| M-027 | Einkauf / Bestellwesen | mittel | 3 | StRS-052, SyRS-054, SwRS-055 |
|
||||
| M-028 | Bestellvorschlagsliste | mittel | 3 | StRS-053, SyRS-055, SwRS-056 |
|
||||
| M-029 | EDI-Verwaltung | mittel | 4 | StRS-054, SyRS-056, SyRS-057, SwRS-057 |
|
||||
| M-030 | Wareneingang / WE-Kalkulation | mittel | 3 | StRS-055, SyRS-058, SwRS-058 |
|
||||
| M-031 | Artikelverwaltung | mittel | 5 | StRS-056, SyRS-059, SyRS-031, SwRS-059, SwRS-032 |
|
||||
| M-032 | Artikelimport | mittel | 3 | StRS-057, SyRS-060, SwRS-060 |
|
||||
| M-033 | Warengruppenverwaltung | flach | 1 | SyRS-059 |
|
||||
| M-034 | Artikeleinheiten | flach | 1 | SyRS-059 |
|
||||
| M-035 | Barcode- und Seriennummernverwaltung | mittel | 3 | StRS-058, SyRS-061, SwRS-061 |
|
||||
| M-036 | Lagerbestandsführung | mittel | 3 | StRS-059, SyRS-062, SwRS-062 |
|
||||
| M-037 | Inventur | flach | 2 | SyRS-116, SwRS-116 |
|
||||
| M-038 | Kommissionierung | flach | 2 | SyRS-117, SwRS-117 |
|
||||
| M-039 | Logistik / Versand | mittel | 3 | StRS-060, SyRS-063, SwRS-063 |
|
||||
| M-040 | Produktion | flach | 2 | SyRS-115, SwRS-115 |
|
||||
| M-041 | Kostenträger / Kostenstellen | flach | 2 | SyRS-127, SwRS-127 |
|
||||
| M-042 | Kontenrahmen | flach | 1 | SwRS-147 |
|
||||
| M-043 | Mehrwertsteuer | mittel | 3 | StRS-043, SyRS-047, SwRS-048 |
|
||||
| M-044 | Aufschläge Stundensätze | flach | 2 | SyRS-128, SwRS-128 |
|
||||
| M-045 | Projektpreis-Import | flach | 1 | SwRS-148 |
|
||||
| M-046 | Sonderpreis-Importe für Verträge | flach | 1 | SwRS-148 |
|
||||
| M-047 | Produkt-/Kundenmatrix | mittel | 3 | StRS-020, SyRS-024, SwRS-025 |
|
||||
| M-048 | TradePool | flach | 2 | SyRS-119, SwRS-119 |
|
||||
| M-049 | Gutschein-/Voucher-Verwaltung | flach | 2 | SyRS-118, SwRS-118 |
|
||||
| M-050 | Helpdesk / Ticketing | mittel | 3 | StRS-061, SyRS-064, SwRS-064 |
|
||||
| M-051 | Ticket-Zeiterfassung | mittel | 6 | StRS-062, StRS-063, SyRS-065, SyRS-066, SwRS-065, SwRS-066 |
|
||||
| M-052 | Checklisten | mittel | 3 | StRS-064, SyRS-067, SwRS-067 |
|
||||
| M-053 | Ticketprozess-Vorlagen (C-FLOW) | mittel | 3 | StRS-065, SyRS-068, SwRS-068 |
|
||||
| M-054 | Erwartete Events | mittel | 3 | StRS-066, SyRS-069, SwRS-069 |
|
||||
| M-055 | Taskmanagement | mittel | 3 | StRS-067, SyRS-070, SwRS-070 |
|
||||
| M-056 | Ticketprojekte / Projektverwaltung | mittel | 3 | StRS-068, SyRS-071, SwRS-071 |
|
||||
| M-057 | RMA / Werkstatt | mittel | 3 | StRS-069, SyRS-072, SwRS-072 |
|
||||
| M-058 | QM-Meldungen | mittel | 3 | StRS-070, SyRS-073, SwRS-073 |
|
||||
| M-059 | Eskalationen | mittel | 3 | StRS-071, SyRS-074, SwRS-074 |
|
||||
| M-060 | SelfCare-Formulare | mittel | 3 | StRS-072, SyRS-075, SwRS-075 |
|
||||
| M-061 | Externer Helpdesk | flach | 1 | SwRS-135 |
|
||||
| M-062 | Geräte / Assets am Konto | mittel | 3 | StRS-017, SyRS-021, SwRS-022 |
|
||||
| M-063 | Asset-/DocuBoard-Verwaltung | flach | 2 | SyRS-021, SwRS-022 |
|
||||
| M-064 | IT-Planner | flach | 1 | SwRS-134 |
|
||||
| M-065 | Kalender und Termine | flach | 2 | SyRS-099, SwRS-100 |
|
||||
| M-066 | Kalender-/Exchange-Synchronisation | mittel | 3 | StRS-097, SyRS-099, SwRS-100 |
|
||||
| M-067 | Mein Tag (MyDay) | mittel | 3 | StRS-098, SyRS-100, SwRS-101 |
|
||||
| M-068 | Mitarbeiterauslastung | flach | 1 | StRS-098 |
|
||||
| M-069 | Todo-Liste | flach | 2 | SyRS-070, SwRS-070 |
|
||||
| M-070 | Telefonie / TAPI | mittel | 3 | StRS-096, SyRS-098, SwRS-099 |
|
||||
| M-071 | Chat | mittel | 3 | StRS-099, SyRS-101, SwRS-102 |
|
||||
| M-072 | Benachrichtigungen | mittel | 3 | StRS-099, SyRS-101, SwRS-102 |
|
||||
| M-073 | Mailversand und Mailvorlagen | mittel | 4 | SyRS-121, SwRS-121, SyRS-108, SwRS-110 |
|
||||
| M-074 | Mail-Scanner | flach | 2 | SyRS-122, SwRS-122 |
|
||||
| M-075 | Outlook-Integration | mittel | 3 | StRS-095, SyRS-097, SwRS-098 |
|
||||
| M-076 | Textbausteine | flach | 2 | SyRS-125, SwRS-125 |
|
||||
| M-077 | Dashboard | flach | 2 | SyRS-130, SwRS-130 |
|
||||
| M-078 | KI-Assistent / AI-Chat | flach | 2 | SyRS-114, SwRS-114 |
|
||||
| M-079 | Social Media | flach | 1 | SwRS-133 |
|
||||
| M-080 | Video-Portal | flach | 1 | SwRS-132 |
|
||||
| M-081 | Tags | flach | 1 | SwRS-131 |
|
||||
| M-082 | Kurz-URLs und WebLinks | flach | 2 | SyRS-113, SwRS-113 |
|
||||
| M-083 | Statistik / Analytics | mittel | 3 | StRS-073, SyRS-076, SwRS-076 |
|
||||
| M-084 | Leistungsnachweise | mittel | 3 | StRS-074, SyRS-077, SwRS-077 |
|
||||
| M-085 | Management Info | flach | 1 | StRS-075 |
|
||||
| M-086 | MSP-Auswertung, -Collector, -Dashboard | mittel | 3 | StRS-076, SyRS-078, SwRS-078 |
|
||||
| M-087 | Report-Engine und Reportverwaltung | mittel | 3 | StRS-077, SyRS-079, SwRS-079 |
|
||||
| M-088 | Reportserver | flach | 1 | StRS-077 |
|
||||
| M-089 | Index-/Volltextsuche | mittel | 3 | StRS-089, SyRS-091, SwRS-092 |
|
||||
| M-090 | Telemetrie | flach | 2 | SyRS-107, SwRS-109 |
|
||||
| M-091 | Rechteverwaltung | tief | 10 | StRS-005, StRS-006, SyRS-007, SyRS-008, SyRS-009, SyRS-010, SwRS-006, SwRS-007, SwRS-008, SwRS-009 |
|
||||
| M-092 | Authentifizierung und Anmeldung | tief | 12 | StRS-078, StRS-080, StRS-081, SyRS-080, SyRS-081, SyRS-082, SyRS-083, SwRS-080, SwRS-082, SwRS-083, SwRS-084, SwRS-141 |
|
||||
| M-093 | Zwei-Faktor-Authentifizierung | mittel | 3 | StRS-079, SyRS-081, SwRS-081 |
|
||||
| M-094 | Zugriffstoken (API-Token) | mittel | 3 | StRS-082, SyRS-084, SwRS-085 |
|
||||
| M-095 | Lizenzverwaltung | mittel | 5 | StRS-004, SyRS-005, SyRS-006, SwRS-005, SwRS-124 |
|
||||
| M-096 | Mitarbeiterverwaltung / Personal | mittel | 3 | StRS-085, SyRS-087, SwRS-088 |
|
||||
| M-097 | Mandanten und Filialen | mittel | 3 | StRS-002, SyRS-003, SwRS-003 |
|
||||
| M-098 | Anwendungseinstellungen | mittel | 3 | StRS-086, SyRS-088, SwRS-089 |
|
||||
| M-099 | Zusatzfelder (Custom Properties) | mittel | 3 | StRS-009, SyRS-013, SwRS-013 |
|
||||
| M-100 | Passwort-Manager / Zugangsverwaltung | mittel | 3 | StRS-083, SyRS-085, SwRS-086 |
|
||||
| M-101 | DSGVO / Datenschutz | mittel | 3 | StRS-084, SyRS-086, SwRS-087 |
|
||||
| M-102 | PDF-Signierung | flach | 2 | SyRS-035, SwRS-035 |
|
||||
| M-103 | Dokumenten- und Dateiverwaltung | mittel | 3 | StRS-088, SyRS-090, SwRS-091 |
|
||||
| M-104 | Datenbank-Skript-Engine | mittel | 3 | StRS-010, SyRS-014, SwRS-014 |
|
||||
| M-105 | SQL-Manager | flach | 1 | SwRS-139 |
|
||||
| M-106 | Protokollierung und LogViewer | flach | 2 | SyRS-106, SwRS-108 |
|
||||
| M-107 | c-entron Inspektor | flach | 1 | SwRS-140 |
|
||||
| M-108 | Massenupdates (Data Updater) | mittel | 3 | StRS-087, SyRS-089, SwRS-090 |
|
||||
| M-109 | Änderungsverfolgung | mittel | 3 | StRS-007, SyRS-011, SwRS-010 |
|
||||
| M-110 | Länder und Bundesländer | flach | 2 | SyRS-126, SwRS-126 |
|
||||
| M-111 | Externe Tools | mittel | 3 | StRS-090, SyRS-092, SwRS-093 |
|
||||
| M-112 | Objekt-Externreferenzen | flach | 2 | SyRS-112, SwRS-112 |
|
||||
| M-113 | Legacy-REST-Webservice | flach | 2 | SyRS-104, SwRS-105 |
|
||||
| M-114 | Moderne REST-API v1 | mittel | 3 | SyRS-076, SyRS-104, SwRS-106 |
|
||||
| M-115 | Web-Service-Hosting | tief | 10 | StRS-100, StRS-008, SyRS-102, SyRS-103, SyRS-105, SyRS-109, SyRS-110, SwRS-103, SwRS-104, SwRS-107 |
|
||||
| M-116 | Verbindungsmanager | flach | 2 | SyRS-129, SwRS-129 |
|
||||
| M-117 | Echtzeitdienste (SignalR) | flach | 2 | SyRS-098, SwRS-102 |
|
||||
| M-118 | Nexus ServiceBoard | mittel | 3 | StRS-091, SyRS-093, SwRS-094 |
|
||||
| M-119 | Nexus WebCart / Kundenportal | mittel | 6 | StRS-092, StRS-093, SyRS-094, SyRS-095, SwRS-095, SwRS-096 |
|
||||
| M-120 | Nexus WebOffer | mittel | 3 | StRS-094, SyRS-096, SwRS-097 |
|
||||
| M-121 | Nexus Dokumentensignatur | mittel | 3 | StRS-094, SyRS-096, SwRS-097 |
|
||||
| M-122 | Nexus Verwaltung und Einstellungen | flach | 1 | SwRS-142 |
|
||||
| M-123 | Web-Konten (WebAccount) | flach | 2 | StRS-092, SwRS-141 |
|
||||
| M-124 | Externe Warenwirtschafts- und Bank-APIs | mittel | 4 | SyRS-123, SyRS-124, SwRS-123, SwRS-137 |
|
||||
| M-125 | Gateway / EDI-Konnektoren und E-Rechnung | mittel | 5 | StRS-049, SyRS-051, SwRS-052, SwRS-057, SwRS-138 |
|
||||
| M-126 | RMM-Anbindung (Riverbird) | mittel | 3 | StRS-034, SyRS-039, SwRS-040 |
|
||||
| M-127 | Persistenz / ORM | flach | 1 | SwRS-143 |
|
||||
| M-128 | Domänenmodell | flach | 1 | SwRS-144 |
|
||||
| M-129 | Basisbibliotheken | mittel | 3 | SwRS-145, SyRS-012, SwRS-011 |
|
||||
| M-130 | UI-Bausteine | flach | 2 | SwRS-149, SwRS-012 |
|
||||
| M-131 | Lokalisierung | mittel | 3 | StRS-003, SyRS-004, SwRS-004 |
|
||||
| M-132 | Build, Auslieferung und Betrieb | flach | 1 | SwRS-146 |
|
||||
| M-133 | Testsuite | flach | 2 | SyRS-120, SwRS-120 |
|
||||
| M-134 | Mobile-Schnittstelle | flach | 2 | SyRS-111, SwRS-111 |
|
||||
| M-135 | Telekom D!VE | flach | 1 | SwRS-136 |
|
||||
|
||||
---
|
||||
|
||||
## 3. Konsistenzcheck über das gesamte Anforderungs-Set
|
||||
|
||||
Der Check wurde vor Abgabe über alle 380 Anforderungen aus `StRS.md`, `SyRS.md` und `SwRS.md` ausgeführt. Grundlage ist eine maschinelle Auswertung der Anforderungsblöcke; die Prüfpunkte entsprechen den Vorgaben des Auftrags.
|
||||
|
||||
### 3.1 Kennzahlen des Anforderungs-Sets
|
||||
|
||||
| Kennzahl | Wert |
|
||||
|---|---|
|
||||
| Anforderungen gesamt | 380 |
|
||||
| davon StRS | 100 |
|
||||
| davon SyRS | 130 |
|
||||
| davon SwRS | 150 |
|
||||
| Belege gesamt | 740 |
|
||||
| Belege je Anforderung (Mittel) | 1,95 |
|
||||
| Anforderungen mit genau einem Beleg | 109 (28,7 %) |
|
||||
| `PRIMÄR`-Belege | 576 (77,8 % aller Belege) |
|
||||
| `SEKUNDÄR`-Belege | 155 (21,0 %) |
|
||||
| `KONTEXT`-Belege | 9 (1,2 %) |
|
||||
| Anforderungen mit Status `HYPOTHESE` | 15 (3,9 %) |
|
||||
| Anforderungen mit Konsolidierungskandidat | 132 (34,7 %) |
|
||||
| Typverteilung | funktional 136, Daten 91, Schnittstelle 80, Sicherheit 49, nicht-funktional 24 |
|
||||
| Nicht-funktionale Anforderungen mit ISO-25010-Merkmal | 24 von 24 (100 %) |
|
||||
|
||||
Verteilung der ISO-25010-Merkmale über die 24 nicht-funktionalen Anforderungen: Wartbarkeit 9, Zuverlässigkeit 6, Performance-Effizienz 4, Übertragbarkeit 3, Benutzbarkeit 2.
|
||||
|
||||
### 3.2 Doppelte oder mehrfach vergebene IDs
|
||||
|
||||
**Befund: keine.** Die 380 IDs sind eindeutig und lückenlos: `StRS-001` bis `StRS-100`, `SyRS-001` bis `SyRS-130`, `SwRS-001` bis `SwRS-150`. Geprüft durch Sortieren und Zählen der Werte des Feldes `ID`.
|
||||
|
||||
### 3.3 Anforderungen ohne Beleg
|
||||
|
||||
**Befund: keine.** Jede der 380 Anforderungen führt mindestens einen Beleg mit Klassifikation und Begründung.
|
||||
|
||||
### 3.4 Anforderungen ohne Angabe zur Übernahmewürdigkeit
|
||||
|
||||
**Befund: keine.** Alle 380 Anforderungen tragen eine gefüllte Angabe im Feld `Übernahmewürdigkeit` mit Begründung. Verteilung: 344 `übernehmen`, 26 `Workaround`, 7 `veraltet`, 3 `Sonderfall`.
|
||||
|
||||
### 3.5 Tracelinks auf nicht existierende IDs
|
||||
|
||||
**Befund: keine.** Alle in den Feldern `Tracelinks` genannten Kennungen verweisen auf vorhandene Anforderungen. Zusätzlich gilt:
|
||||
|
||||
- Jede der 100 StRS-Anforderungen ist mit mindestens einer SyRS-Anforderung verbunden.
|
||||
- Jede der 130 SyRS-Anforderungen ist mit mindestens einer StRS-Anforderung verbunden.
|
||||
- Jede der 150 SwRS-Anforderungen ist mit mindestens einer SyRS-Anforderung verbunden.
|
||||
|
||||
Die konsolidierte Tabelle in `Traceability.md` enthält 249 Zeilen.
|
||||
|
||||
### 3.6 Inhaltlich deckungsgleiche Anforderungen ohne Konsolidierungsmarkierung
|
||||
|
||||
**Befund: keine unmarkierten Dubletten festgestellt.** Geprüft wurde paarweise über Titel und Aussage innerhalb jeder Ebene sowie ebenenübergreifend über die Tracelinks. Dabei gilt die im Auftrag vorgegebene Abgrenzung: Zwei Anforderungen, die denselben Sachverhalt aus Sicht verschiedener Ebenen beschreiben, sind kein Konsolidierungsfall, sondern über Tracelinks verbunden.
|
||||
|
||||
Die 132 markierten Konsolidierungskandidaten betreffen durchweg **fachlich gleichartige Konzepte in getrennten Implementierungen**. Die wesentlichen Gruppen:
|
||||
|
||||
| Konsolidierungsgruppe | Getrennte Implementierungen | Beispielanforderungen |
|
||||
|---|---|---|
|
||||
| Gerät beim Kunden | Stammblätter (M-006), Konto-Geräte (M-062), AssetManagement/DocuBoard (M-063) | StRS-016, StRS-017, SwRS-022 |
|
||||
| Geschäftspartner | Alttabellen `Kunden`/`Kreditor` gegen Kontostruktur `Accounts` | StRS-011, SwRS-015, SwRS-016 |
|
||||
| Vertrag | Kundenverträge im Belegwesen (M-011) gegen Lieferantenverträge (M-005) | StRS-015, StRS-031 |
|
||||
| Projekt | CRM-Projekt (M-003), Ticketprojekt (M-056), freie Projektnummer am Beleg | StRS-013, SyRS-017 |
|
||||
| Abrechnung wiederkehrender Leistungen | Vertragsabrechnung (M-012), Pauschalabrechnung (M-013), Ticketabrechnung (M-014) | StRS-036, StRS-037 |
|
||||
| Aufgabe | Taskmanagement (M-055) gegen Todo-Liste (M-069) | StRS-067, SwRS-070 |
|
||||
| Arbeitszeit | Helpdesk-Timer (M-051) gegen MyDay-Arbeitspositionen (M-067) | StRS-098, SyRS-065 |
|
||||
| Interne Kommunikation | Chat (M-071), Benachrichtigungen (M-072), Social-Media-Datenstrom (M-079) | StRS-099, SwRS-133 |
|
||||
| Preisimport | Artikelimport (M-032), Projektpreis-Import (M-045), Sonderpreis-Importe (M-046) | StRS-057, SwRS-148 |
|
||||
| Datenzugriff im Client | `BL*Logic` gegen `WS*Logic` je Modul | StRS-008, SwRS-012 |
|
||||
| Schnittstellengeneration | Legacy-REST (M-113) gegen versionierte v1-API (M-114) | SyRS-104, SwRS-105 |
|
||||
| Einstellungen | Alttabelle `Stammdat` gegen `ApplicationSettings` | StRS-086, SwRS-089 |
|
||||
| Änderungsverfolgung | Auditspalten, Belegversionen, `AppRightLog`, `ReceiptLogBL`, `AccountDeviceLog`, `AccessTokenLog`, NHibernate-Ereignishorcher | StRS-007, SyRS-011 |
|
||||
| Platzhalterersetzung | Externe Tools, Reportengine, Mailvorlagen, Mahnschreiben | SyRS-092, SwRS-046 |
|
||||
| Anwendertext | Ressourcendateien gegen im Quelltext hinterlegte deutsche Meldungen | StRS-003, SwRS-004 |
|
||||
| Seriennummer / Inventur | `BarCode` gegen `BarCode2`, `InventoryBL` gegen `InventoryNewBL` | SwRS-061, SyRS-116 |
|
||||
| Kontoumsatzabruf | finAPI-Klient gegen FinTS-Verbindung | StRS-050, SyRS-052 |
|
||||
| Sendungsanmeldung | GLS gegen Shipcloud | StRS-060, SwRS-063 |
|
||||
| Zahlungsvereinbarung | Belegkonditionen (`Zahkond`) gegen Zahlungskonditionen am Vertrag | SwRS-150 |
|
||||
| Vertragsauswertung | `ContractEvaluationOld` gegen `ContractEvaluation2` | StRS-040, SwRS-045 |
|
||||
|
||||
### 3.7 Risikorelevante Anforderungen mit Belegsituation
|
||||
|
||||
Als risikorelevant gelten nach Vorgabe des Auftrags alle Anforderungen zu **Sicherheitsregeln, Abrechnungs- und Fakturierungslogik sowie Berechtigungen**. Die Auswahl erfolgte maschinell über den Typ `Sicherheit` sowie über Schlüsselwörter in Titel und Typ (unter anderem *Abrechn*, *Rechnung*, *Faktur*, *Provision*, *Mahn*, *Zahlung*, *SEPA*, *Steuer*, *Preis*, *Lizenz*, *Recht*, *Berechtig*, *Kennwort*, *Anmeld*, *Sicher*, *Token*, *Verschlüssel*, *Zugriff*, *DSGVO*, *Signatur*, *Kontingent*, *Beleg*).
|
||||
|
||||
**Ergebnis: 172 risikorelevante Anforderungen. Davon 165 mit mindestens einem `PRIMÄR`-Beleg, 7 ohne `PRIMÄR`-Beleg — diese 7 sind ausnahmslos als `[HYPOTHESE]` gekennzeichnet. Verstöße gegen die risikobasierte Priorisierung: keine.**
|
||||
|
||||
| ID | Titel | `PRIMÄR`-Beleg vorhanden | Kennzeichnung |
|
||||
|---|---|---|---|
|
||||
| StRS-001 | Durchgängige Abwicklung vom Angebot bis zur Rechnung in einem System | ja | belegt |
|
||||
| StRS-004 | Funktionsumfang wird über Lizenzen freigeschaltet | ja | belegt |
|
||||
| StRS-005 | Rollenbasierte Zugriffssteuerung über Rechtegruppen | ja | belegt |
|
||||
| StRS-006 | Einschränkende Rechte begrenzen die Sicht auf eigene Vorgänge oder die eigene Filiale | ja | belegt |
|
||||
| StRS-008 | Betrieb wahlweise mit direktem Datenbankzugriff oder über den Web-Service | ja | belegt |
|
||||
| StRS-021 | Eindeutige, lückenlos vergebene Belegnummern je Nummernkreis | ja | belegt |
|
||||
| StRS-022 | Belegversionen bleiben vollständig erhalten | ja | belegt |
|
||||
| StRS-023 | Belege gegen gleichzeitige Änderung schützen | ja | belegt |
|
||||
| StRS-024 | Belegerstellung nur mit passendem Recht und passender Filiale | ja | belegt |
|
||||
| StRS-025 | Neue Belege bei erreichter Mahnstufe sperren | ja | belegt |
|
||||
| StRS-026 | Steuerliche Pflichtangaben des Kunden vor Belegerstellung prüfen | ja | belegt |
|
||||
| StRS-027 | Mindestpreisunterschreitung nur mit besonderem Recht | ja | belegt |
|
||||
| StRS-028 | Belegstatus und Pflichtangaben je Belegart konfigurierbar | ja | belegt |
|
||||
| StRS-029 | Aus Belegen unmittelbar Tickets erzeugen | ja | belegt |
|
||||
| StRS-030 | Belegdokumente erzeugen, archivieren und elektronisch signieren lassen | ja | belegt |
|
||||
| StRS-031 | Verträge als eigene Belegart mit Laufzeit und Abrechnungsintervall | ja | belegt |
|
||||
| StRS-032 | Turnusmäßige Rechnungsstellung aus Verträgen | ja | belegt |
|
||||
| StRS-033 | Kontingente im Vertrag führen und verbrauchsabhängig verrechnen | ja | belegt |
|
||||
| StRS-034 | Verbrauchsabhängige Vertragsabrechnung aus externen Nutzungsdaten | nein | [HYPOTHESE] |
|
||||
| StRS-035 | Klickabrechnung für Druck- und Kopiersysteme | nein | [HYPOTHESE] |
|
||||
| StRS-036 | Pauschalabrechnung unabhängig vom Einzelaufwand | ja | belegt |
|
||||
| StRS-037 | Rechnungen unmittelbar aus erfassten Ticketzeiten erzeugen | ja | belegt |
|
||||
| StRS-038 | Vertriebsprovisionen nach Schema berechnen | ja | belegt |
|
||||
| StRS-039 | Provisionen aus dem Vertrag auf Folgebelege übernehmen | ja | belegt |
|
||||
| StRS-041 | Dreistufiges Mahnwesen mit protokollierter Stufenerhöhung | ja | belegt |
|
||||
| StRS-042 | Offener Betrag berücksichtigt Zahlungen und Gutschriften | ja | belegt |
|
||||
| StRS-043 | Steuersätze je Land mit Erlös- und Aufwandskonten | ja | belegt |
|
||||
| StRS-044 | Zahlungseingänge erfassen und Rechnungen als bezahlt kennzeichnen | ja | belegt |
|
||||
| StRS-045 | SEPA-Lastschriften in mehreren Formatversionen erzeugen | ja | belegt |
|
||||
| StRS-046 | Rücknahme eines SEPA-Exports öffnet die Rechnung nachvollziehbar wieder | ja | belegt |
|
||||
| StRS-047 | Belegdaten an die Finanzbuchhaltung übergeben und Offene Posten zurücklesen | ja | belegt |
|
||||
| StRS-048 | Belege und Belegbilder an DATEV übertragen | nein | [HYPOTHESE] |
|
||||
| StRS-049 | Elektronische Rechnungen nach ZUGFeRD und XRechnung | ja | belegt |
|
||||
| StRS-051 | Barzahlungen und Kassenbuch führen | ja | belegt |
|
||||
| StRS-052 | Einkaufsbelegkette mit eigener Rechtestruktur | ja | belegt |
|
||||
| StRS-054 | Belegaustausch mit Distributoren über EDI | ja | belegt |
|
||||
| StRS-056 | Artikelstamm mit Preisen, Einheiten und Warengruppen | ja | belegt |
|
||||
| StRS-057 | Artikel- und Preisdaten von Distributoren importieren | ja | belegt |
|
||||
| StRS-063 | Ticketzeiten sind nach Belegzuweisung unveränderlich | ja | belegt |
|
||||
| StRS-065 | Wiederkehrende Serviceabläufe über Ticketprozessvorlagen steuern | ja | belegt |
|
||||
| StRS-076 | Managed-Service-Lizenzen sammeln und mit Verträgen abgleichen | ja | belegt |
|
||||
| StRS-077 | Reports definieren, drucken, exportieren und zeitgesteuert versenden | ja | belegt |
|
||||
| StRS-078 | Anmeldung über mehrere Verfahren mit systemweiter Vorgabe | ja | belegt |
|
||||
| StRS-079 | Zweiter Faktor bei der Anmeldung | ja | belegt |
|
||||
| StRS-080 | Benutzerkonten zeitlich befristen und deaktivieren | ja | belegt |
|
||||
| StRS-081 | Kennwortverwaltung mit Mindestlänge und Änderungsnachweis | ja | belegt |
|
||||
| StRS-082 | API-Zugriffstoken mit Ablauf, Sperre und Nutzungsprotokoll | ja | belegt |
|
||||
| StRS-083 | Kundenzugangsdaten verschlüsselt verwalten und Zugriffe protokollieren | ja | belegt |
|
||||
| StRS-084 | Auskunfts- und Löschanspruch nach DSGVO bedienen | ja | belegt |
|
||||
| StRS-092 | Kundenportal mit eigenem Zugang, eigenem Rechtemodell und eigenem Port | ja | belegt |
|
||||
| StRS-095 | Outlook-Integration für Belege, Tickets und Kontakte | ja | belegt |
|
||||
| StRS-097 | Termine mit Exchange abgleichen, gesteuert über Abteilungszugehörigkeit | ja | belegt |
|
||||
| SyRS-001 | Einheitliche Belegstruktur aus Kopf und Positionen | ja | belegt |
|
||||
| SyRS-002 | Belege in Folgebelege überführen und Belege kopieren | ja | belegt |
|
||||
| SyRS-003 | Filialbezug an Beleg, Mitarbeiter, Rechtegruppe und Lager | ja | belegt |
|
||||
| SyRS-005 | Lizenzprüfung bei jeder Anmeldung mit Anzahl-, Ablauf- und Versionsprüfung | ja | belegt |
|
||||
| SyRS-006 | Modul- und Einstellungsverfügbarkeit aus Lizenz und Recht ableiten | ja | belegt |
|
||||
| SyRS-007 | Rechteermittlung über eine zwischengespeicherte Rechteliste je Benutzer | ja | belegt |
|
||||
| SyRS-008 | Rechtebaum mit Elternrechten und Zwangsvergabe übergeordneter Rechte | ja | belegt |
|
||||
| SyRS-009 | Sichtbarkeitsstufe aus gewährendem und einschränkendem Recht ableiten | ja | belegt |
|
||||
| SyRS-010 | Rechteänderungen werden vollständig protokolliert | ja | belegt |
|
||||
| SyRS-013 | Zusatzfelder mit Datentyp und verschlüsseltem Werttyp | ja | belegt |
|
||||
| SyRS-017 | Projektzuordnung an Belegen über eine freie Projektnummer | ja | belegt |
|
||||
| SyRS-018 | Kampagnenphasen werden zeitgesteuert fortgeschrieben | ja | belegt |
|
||||
| SyRS-022 | Produktlebenszyklusdaten werden zeitgesteuert importiert | ja | belegt |
|
||||
| SyRS-024 | Produktmatrix als geteiltes Steuerelement in mehreren Oberflächen | ja | belegt |
|
||||
| SyRS-026 | Belegversionierung über strukturgleiche Versionstabellen | ja | [HYPOTHESE] |
|
||||
| SyRS-027 | Optimistische Nebenläufigkeitsprüfung über einen Belegschlüssel | ja | belegt |
|
||||
| SyRS-028 | Belegartspezifische Rechteprüfung über eine austauschbare Fachlogik | ja | belegt |
|
||||
| SyRS-029 | Mahnstufensperre je Belegart konfigurierbar | ja | belegt |
|
||||
| SyRS-031 | Preisfindung aus mehreren Preisquellen mit Mindestpreisschutz | ja | belegt |
|
||||
| SyRS-032 | Anwenderdefinierter Belegstatus getrennt vom Systemstatus | ja | belegt |
|
||||
| SyRS-033 | Ticketerzeugung aus Belegen mit Wiederverwendung bestehender Tickets | ja | belegt |
|
||||
| SyRS-034 | Belegdokument aus Report, Reportgruppe und Ausgabekonfiguration erzeugen | ja | belegt |
|
||||
| SyRS-035 | PDF-Signatur nur bei verfügbarem Zertifikat | ja | belegt |
|
||||
| SyRS-036 | Vertragsmerkmale für Laufzeit, Abrechnung, Kontingent und Verlängerung | ja | belegt |
|
||||
| SyRS-037 | Vertragsende und Vertragsabschluss werden zeitgesteuert überwacht | ja | belegt |
|
||||
| SyRS-038 | Kontingentabrechnung bei abweichenden Intervallen normalisieren | ja | belegt |
|
||||
| SyRS-039 | Abbruch der Rechnungserzeugung bei unvollständigen Nutzungsdaten | nein | [HYPOTHESE] |
|
||||
| SyRS-040 | Zählerstände als Grundlage der Klickabrechnung | ja | belegt |
|
||||
| SyRS-041 | Modulverfügbarkeit über kombinierte Rechte- und Lizenzausdrücke | ja | belegt |
|
||||
| SyRS-042 | Abrechnungseinstellungen der Ticketabrechnung als eigene Konfiguration | ja | belegt |
|
||||
| SyRS-043 | Provisionsschemas zeitgesteuert auf offene Belege anwenden | ja | belegt |
|
||||
| SyRS-045 | Mahnläufe je Kunde mit Vorschau und Reportprüfung | ja | belegt |
|
||||
| SyRS-046 | Offene-Posten-Sicht über Rechnungsbeträge, Zahlungen und Gutschriften | ja | belegt |
|
||||
| SyRS-047 | Steuersätze werden zeitgesteuert an Artikel und Warengruppen fortgeschrieben | ja | belegt |
|
||||
| SyRS-048 | Zahlungseingänge und -ausgänge getrennt führen | ja | belegt |
|
||||
| SyRS-050 | Buchhaltungsübergabe mit eigener Belegartzuordnung | ja | belegt |
|
||||
| SyRS-051 | Elektronische Rechnung als eigenständige Datei und als eingebettetes PDF | ja | belegt |
|
||||
| SyRS-053 | Kassenbuchungen mit eigenem Nummernkreis und Filialbindung | ja | belegt |
|
||||
| SyRS-054 | Lieferantenbelege mit eigenen Repositories und externer Belegnummer | ja | belegt |
|
||||
| SyRS-055 | Bestellvorschläge und Bestandsdaten zeitgesteuert aktualisieren | ja | belegt |
|
||||
| SyRS-058 | Einkaufspreis an der Belegposition nachträglich anpassbar | ja | belegt |
|
||||
| SyRS-060 | Artikelimport und Preisaktualisierung laufen als eigenständige Dienste | ja | belegt |
|
||||
| SyRS-064 | Ticket mit Bearbeiterzuordnung, Fingerabdruck und Sichtbarkeitsmerkmal | ja | belegt |
|
||||
| SyRS-066 | Zeitänderungen prüfen die Zuordnung über den Mitarbeiterartikel | ja | belegt |
|
||||
| SyRS-071 | Ticketprojekte mit eigener Sichtbarkeitssteuerung | ja | belegt |
|
||||
| SyRS-074 | Eskalationen laufen zeitgesteuert mit eigener Mailvorlage | ja | belegt |
|
||||
| SyRS-076 | Auswertungsendpunkte sind einzeln rechtegeschützt | ja | belegt |
|
||||
| SyRS-080 | Verbindungsticket als Sitzungsnachweis mit Ablauf und Auffrischung | ja | belegt |
|
||||
| SyRS-081 | Abgelaufene Verbindungstickets werden minütlich entfernt | ja | belegt |
|
||||
| SyRS-082 | Anmeldeversuche und Anmeldedaten werden protokolliert | ja | belegt |
|
||||
| SyRS-083 | Anmeldung über Schnittstellen mit Ticket oder Zugriffstoken | ja | belegt |
|
||||
| SyRS-084 | Zugriffstoken protokollieren jeden Aufruf mit Methode und IP-Adresse | ja | belegt |
|
||||
| SyRS-085 | Vertrauliche Werte werden symmetrisch mit ableitbarem Schlüssel verschlüsselt | ja | belegt |
|
||||
| SyRS-086 | DSGVO-Bereinigung nur mit Recht und freigeschaltetem Modulmerkmal | ja | belegt |
|
||||
| SyRS-093 | Web-Portal führt Rechte, Web-Rechte, Lizenzen und Anmeldeart als Ansprüche | ja | belegt |
|
||||
| SyRS-094 | Kundenportal ist von der Mitarbeiteroberfläche technisch getrennt | ja | belegt |
|
||||
| SyRS-095 | Kundenportal bündelt Belege, Verträge, Tickets, Dokumente und Formulare | ja | belegt |
|
||||
| SyRS-096 | Geteilte Dokumente werden über Token und eigene Autorisierung freigegeben | ja | belegt |
|
||||
| SyRS-098 | Echtzeitkanäle sind authentifiziert und teils über ein Geheimnis geschützt | ja | belegt |
|
||||
| SyRS-103 | Fehler in Schnittstellenaufrufen liefern keine internen Details | ja | belegt |
|
||||
| SyRS-107 | Nutzungsdaten werden verdichtet erhoben und zeitgesteuert übertragen | ja | belegt |
|
||||
| SyRS-108 | Schutz vor unbeabsichtigtem Mailversand an Kundenadressen | ja | belegt |
|
||||
| SyRS-117 | Kommissionierung mit Mengenrückmeldung an den Beleg | ja | belegt |
|
||||
| SyRS-121 | Mailversand mit Vorlagen, Variablenersetzung, Signatur und Nachverfolgung | ja | belegt |
|
||||
| SyRS-124 | Fremdsysteme melden sich mit eigener Anwendungsart, Lizenz und Ablaufregel an | ja | belegt |
|
||||
| SyRS-126 | Länderstammdaten mit Währungskurs und steuerlicher Vorbelegung | ja | belegt |
|
||||
| SyRS-127 | Kostenstelle und Kostenträger je Belegart als Pflichtangabe steuerbar | ja | belegt |
|
||||
| SyRS-129 | Verbindungsdaten liegen in einer Datei mit verschlüsseltem Kennwort | ja | belegt |
|
||||
| SwRS-001 | Abstrakte Belegbasisklasse mit Pflichtmethoden | ja | belegt |
|
||||
| SwRS-005 | Lizenzzugriff über eine Schnittstelle mit Einzelinstanz und Prüfattrappe | ja | belegt |
|
||||
| SwRS-006 | Rechteabfrage als parametrisierte SQL-Abfrage über zwei Zuordnungstabellen | ja | belegt |
|
||||
| SwRS-007 | Rechtestruktur mit Elternverweis, Kinderzähler und Veraltungskennzeichen | ja | belegt |
|
||||
| SwRS-008 | Sichtbarkeitsstufe als eigener Aufzählungstyp | ja | belegt |
|
||||
| SwRS-009 | Rechteprotokoll als eigene Entität mit Vorgangsart | ja | belegt |
|
||||
| SwRS-012 | Auflösung der Datenzugriffsschicht über einen Dienstbehälter | nein | [HYPOTHESE] |
|
||||
| SwRS-020 | Lieferantenverträge über die dreiteilige Zugriffskette | nein | [HYPOTHESE] |
|
||||
| SwRS-021 | Stammblatt als Kopf-Positions-Entität im Belegzweig | ja | belegt |
|
||||
| SwRS-025 | Produktmatrix als geteiltes Steuerelement mit eigener Fachlogik | ja | belegt |
|
||||
| SwRS-029 | Belegartabhängige Fachlogik über einen Verteiler mit Ausdrucksparameter | ja | belegt |
|
||||
| SwRS-030 | Mahnstufe des Kontos über eine gemeinsame Kontoinformation | ja | belegt |
|
||||
| SwRS-031 | Steuerliche Kundenangaben als eigene Felder am Kunden | ja | belegt |
|
||||
| SwRS-032 | Preisermittlung in eigenen Hilfsklassen der Belegverarbeitung | ja | belegt |
|
||||
| SwRS-034 | Ticketerzeugung aus Belegen über vorbereitete Informationsobjekte | ja | belegt |
|
||||
| SwRS-036 | Vertragsentität mit Schnittstellen für Kontingent, Status und Provision | ja | belegt |
|
||||
| SwRS-037 | Vertragsabrechnung als Teilklasse mit deutschsprachigen Zwischenobjekten | ja | belegt |
|
||||
| SwRS-038 | Abrechnungsparameter als eigenes Übergabeobjekt | ja | belegt |
|
||||
| SwRS-039 | Kontingentänderungen erzeugen einzelne Protokolleinträge je Merkmal | ja | belegt |
|
||||
| SwRS-041 | Verdichtete Stammblattobjekte für die Klickabrechnung | ja | belegt |
|
||||
| SwRS-042 | Modulregistrierung als Datensatz mit Rechte- und Lizenzausdruck | ja | belegt |
|
||||
| SwRS-043 | Belegerzeugung aus Zeiten mit eigenen Ergebnisobjekten | ja | belegt |
|
||||
| SwRS-044 | Provisionsdaten in Schema-, Positions- und Zielentitäten | ja | belegt |
|
||||
| SwRS-046 | Mahnlauf mit Reportparametern und je Kunde gebündelten Rechnungen | ja | belegt |
|
||||
| SwRS-047 | Rechnungsbeträge als getrennte Felder für Brutto, Zahlung und Gutschrift | ja | belegt |
|
||||
| SwRS-048 | Steuersatz mit Kontozuordnung und Nachfolgeverweis | ja | belegt |
|
||||
| SwRS-049 | Zahlungsentitäten mit eigenem Protokoll und Löschfilter | ja | belegt |
|
||||
| SwRS-051 | Buchhaltungsschnittstelle mit eigener Belegartabbildung | ja | belegt |
|
||||
| SwRS-052 | Elektronische Rechnung als eigene Erzeugungslogik mit XML-Aufbau im Code | ja | belegt |
|
||||
| SwRS-053 | Bankzugriff über gekapselte Klienten mit eigener Fehlerklasse | ja | belegt |
|
||||
| SwRS-054 | Kassenvorgänge als eigener Fachbereich | ja | belegt |
|
||||
| SwRS-055 | Lieferantenbelege mit eigenen Fachlogikordnern und Speicherrepositories | nein | [HYPOTHESE] |
|
||||
| SwRS-058 | Einkaufspreisänderung positionsweise und belegweit mit Speicherentscheidung | ja | belegt |
|
||||
| SwRS-066 | Zeitrechteprüfung in der Web-Service-Schicht statt in der Fachlogik | ja | belegt |
|
||||
| SwRS-081 | Zwei-Faktor-Prüfung über austauschbare Prüfverfahren | ja | belegt |
|
||||
| SwRS-082 | Benutzerkonto trägt Sperrzeitraum, Anmeldedaten und Anmeldeverfahren | ja | belegt |
|
||||
| SwRS-083 | Kennwortrichtlinie je Benutzer statt systemweit | ja | belegt |
|
||||
| SwRS-084 | Kennwortablage als ungesalzener SHA-1-Hash über eine Einbyte-Kodierung | ja | belegt |
|
||||
| SwRS-085 | Zugriffstoken mit Hashablage, Ablaufmerkmal und Weichlöschung | ja | belegt |
|
||||
| SwRS-086 | Symmetrische Verschlüsselung mit aus dem Schlüssel abgeleitetem Initialisierungsvektor | ja | belegt |
|
||||
| SwRS-087 | DSGVO-Löschung derzeit nur für Ansprechpartner umgesetzt | ja | belegt |
|
||||
| SwRS-094 | Portalrichtlinien werden aus Rechtekonstanten durch Reflexion erzeugt | ja | belegt |
|
||||
| SwRS-095 | Kundenportalport als eigene Konfigurationsklasse mit Vorrang bei fehlendem Wert | ja | belegt |
|
||||
| SwRS-110 | Entwicklerschutz als statische Klasse mit Buildabhängigkeit | ja | belegt |
|
||||
| SwRS-111 | Mobile Datensicht mit eigenem Datenzugriffsordner | ja | belegt |
|
||||
| SwRS-125 | Textbausteine mit eigener Ersetzungsklasse und eigenem Datenzugriff | ja | belegt |
|
||||
| SwRS-128 | Zuschlagssätze mit eigener Fachlogik und Belegzuordnung | ja | belegt |
|
||||
| SwRS-139 | Datenbankdiagnose als lesende Auswertungsklasse | ja | belegt |
|
||||
| SwRS-141 | Web-Konten mit eigener Verwaltung und eigener Kennwortänderung | ja | belegt |
|
||||
| SwRS-143 | Persistenzschicht mit Sitzung, generischem Zugriff und benannten Abfragen | ja | belegt |
|
||||
| SwRS-148 | Preisimporte für Projekte und Verträge als getrennte Module | ja | belegt |
|
||||
| SwRS-150 | Belegkonditionen mit Skontostufen und Gültigkeit je Belegart | ja | belegt |
|
||||
|
||||
### 3.8 Abgleich `Hypothesen.md` gegen die Inline-Markierungen
|
||||
|
||||
**Befund: deckungsgleich.** `Hypothesen.md` wurde maschinell aus den Anforderungsdateien erzeugt und enthält genau die Anforderungen, deren Feld `Aussage` mit `[HYPOTHESE]` beginnt **und** deren Feld `Status` mit `HYPOTHESE` beginnt. Beide Mengen umfassen dieselben 15 Kennungen:
|
||||
|
||||
`StRS-034`, `StRS-035`, `StRS-048`, `StRS-093`, `SyRS-019`, `SyRS-023`, `SyRS-026`, `SyRS-039`, `SyRS-056`, `SyRS-057`, `SwRS-012`, `SwRS-020`, `SwRS-024`, `SwRS-027`, `SwRS-055`
|
||||
|
||||
`Hypothesen.md` enthält keine zusätzlichen freien Fragen. Offene Punkte ohne zugehörige Anforderung stehen ausschließlich in Abschnitt 4.5 und Abschnitt 5 dieses Berichts.
|
||||
|
||||
---
|
||||
|
||||
## 4. Selbstbewertung
|
||||
|
||||
### 4.1 Analysetiefe je Modul in absoluten Zahlen
|
||||
|
||||
Von **135 Modulen** des Inventars wurden analysiert:
|
||||
|
||||
| Einstufung | Anzahl Module | Anteil |
|
||||
|---|---|---|
|
||||
| `tief` (≥ 8 Anforderungen) | **5** | 3,7 % |
|
||||
| `mittel` (3–7 Anforderungen) | **79** | 58,5 % |
|
||||
| `flach` (1–2 Anforderungen) | **51** | 37,8 % |
|
||||
| `nicht analysiert` (0 Anforderungen) | **0** | 0,0 % |
|
||||
|
||||
Die fünf tief analysierten Module sind: M-009 Belegwesen Verkauf (30 Anforderungen), M-092 Authentifizierung und Anmeldung (12), M-091 Rechteverwaltung (10), M-115 Web-Service-Hosting (10) und M-018 Mahnwesen (9). Diese Auswahl folgt der Vorgabe aus Schritt 0c, zuerst dort zu vertiefen, wo Sicherheitsregeln, Abrechnungs- und Fakturierungslogik sowie Berechtigungsprüfungen liegen.
|
||||
|
||||
### 4.2 Mindestabdeckung
|
||||
|
||||
**Die Mindestabdeckung nach Schritt 0b ist erreicht.** Jedes der 135 Module trägt mindestens eine Anforderung; kein Modul musste als `nicht analysiert` geführt werden. Die Reihenfolge des Vorgehens entsprach dem Auftrag: zuerst das vollständige Inventar (Abschnitt 1), danach je Modul mindestens eine Anforderung, erst zuletzt die Vertiefung der fünf risikonahen Module.
|
||||
|
||||
Zwei Module wurden erst während der Formalisierung entdeckt und dem Inventar hinzugefügt (M-134 Mobile-Schnittstelle, M-135 Telekom D!VE). Beide erhielten unmittelbar Anforderungen. Das Inventar wurde damit ergänzt, aber an keiner Stelle gekürzt.
|
||||
|
||||
### 4.3 Stellen mit dünner Belegsituation
|
||||
|
||||
Der Gesamtanteil der `PRIMÄR`-Belege liegt bei 77,8 %. Die Belegsituation ist jedoch ungleich verteilt. Dünn belegt sind:
|
||||
|
||||
**a) Module ohne jeden `PRIMÄR`-Beleg (3 von 135):**
|
||||
|
||||
| Modul | Anforderungen | Grund |
|
||||
|---|---|---|
|
||||
| M-008 Audit / Umfragen | StRS-019, SyRS-023, SwRS-024 | Belegt sind nur Modulregistrierung, Ordnerstruktur und Einstellungsseite. Die Umfrageentitäten und die Auswertungslogik wurden nicht geöffnet. |
|
||||
| M-023 DATEV-Belegtransfer | StRS-048 | Belegt sind nur Modulregistrierung und Einstellungsseite; die übertragende Codestelle wurde nicht geöffnet. |
|
||||
| M-085 Management Info | StRS-075 | Belegt ist nur die Modulregistrierung; die Kennzahlenermittlung wurde nicht geöffnet. |
|
||||
|
||||
**b) Weitere Anforderungen ohne `PRIMÄR`-Beleg (12 von 380):** StRS-018 (PLM), StRS-020 (Produktmatrix), StRS-034 und SyRS-039 (RMM-Abrechnung), StRS-035 (Klickabrechnung), StRS-040 (Vertragsauswertung), StRS-067 (Taskmanagement), SyRS-019 und SwRS-020 (Lieferantenverträge), SwRS-012 (ClassContainer), SwRS-027 (Belegversionierung) und SwRS-055 (Speicherrepositories). Zusammen mit den fünf Anforderungen aus Gruppe a sind das 17 von 380 Anforderungen (4,5 %) ohne `PRIMÄR`-Beleg. Alle risikorelevanten Anforderungen dieser beiden Gruppen sind als `[HYPOTHESE]` gekennzeichnet.
|
||||
|
||||
**c) Bereiche, deren Belege überwiegend aus der Entwicklerdokumentation stammen:** Belegversionierung (`SyRS-026`, `SwRS-027`), Speicherrepositories der Belege (`SwRS-055`), EDI-Dateifilter und Aufbewahrungsfrist (`SyRS-056`, `SyRS-057`), die dreiteilige Zugriffskette des Clients (`SyRS-019`, `SwRS-012`, `SwRS-020`) und die RMM-Abrechnung (`StRS-034`, `SyRS-039`). Diese fünf Bereiche sind zugleich die inhaltlich anspruchsvollsten Stellen der Codebasis — hier ist der Abstand zwischen dokumentiertem Soll und geprüftem Ist am größten.
|
||||
|
||||
**d) Nur 9 `KONTEXT`-Belege** wurden vergeben. Das liegt daran, dass die Änderungshistorie der Codebasis in diesem Lauf nicht auswertbar war (siehe Abschnitt 5.1); Commit-Nachrichten, Tickets und Release Notes standen als Beleggrundlage nicht zur Verfügung.
|
||||
|
||||
### 4.4 Begründung der Hypothesenzahl
|
||||
|
||||
15 Hypothesen bei 380 Anforderungen (3,9 %) sind für eine Codebasis dieser Größe eine bewusst niedrige Zahl. Sie ergibt sich aus dem gewählten Vorgehen: Aussagen wurden nur dann formuliert, wenn mindestens ein Beleg vorlag; ließ sich eine vermutete Regel nicht belegen, wurde sie entweder als Hypothese aufgenommen oder gar nicht erst geschrieben. Der zweite Fall — nicht geschriebene Anforderungen — ist in Abschnitt 5 als bekannte Lücke ausgewiesen und nicht in der Hypothesenzahl enthalten. Die 15 Hypothesen betreffen ausnahmslos Fälle, in denen die Entwicklerdokumentation eine Regel beschreibt, die zugehörige Codestelle im Rahmen dieses Laufs aber nicht geöffnet wurde.
|
||||
|
||||
### 4.5 Offene Punkte ohne zugehörige Anforderung
|
||||
|
||||
Diese Punkte sind während der Analyse aufgefallen, ließen sich aber keiner Anforderung zuordnen. Sie gehören nach Vorgabe des Auftrags nicht in `Hypothesen.md`:
|
||||
|
||||
1. **Der Schemastand des Datenbankabzugs liegt hinter dem Codestand.** `SSMS_DB_SCHEMA.sql` trägt das Erzeugungsdatum 11.11.2025 und enthält keine Tabelle für die Zugriffstoken, obwohl `AccessTokenBL` und die zugehörigen Entitäten im Code vorhanden sind. Aussagen zum Datenmodell der Zugriffstoken stützen sich daher ausschließlich auf den Code.
|
||||
2. **Die Entwicklerdokumentation zur Bindungsarchitektur fehlt.** `docs/reference/architecture/mvvm-in-centron.md` besteht vollständig aus dem Satz „I don't know, but I would like to - please tell me." Die MVVM-Umsetzung des Clients konnte daher nicht dokumentationsgestützt beschrieben werden.
|
||||
3. **Abweichung zwischen mitgelieferter Rechtebeschreibung und Code.** `CentronRights.md` beschreibt `RIGHT_MITARBEITERAUSLASTUNG` als Recht zur Anzeige fremder Auslastung. Im Code steuert dieses Recht dagegen das Modul Leistungsnachweise, während die Auslastungssicht über `RIGHT_FREMDAUSLASTUNG` gefiltert wird (siehe StRS-098). Weitere Abweichungen dieser Art sind nicht ausgeschlossen.
|
||||
4. **`ScriptMethodsCollection.cs` mit 20.915 Zeilen wurde nicht inhaltlich ausgewertet.** Die Migrationsskripte enthalten fachliche Regeln (Standardwerte, Rechtevergaben, Datenkorrekturen), die in dieser Iteration nicht erschlossen wurden.
|
||||
5. **`ApplicationSettingDefinitions.cs` mit 86.561 Byte wurde nicht vollständig gelesen.** Die Datei enthält die Bedeutung jeder einzelnen Einstellung und damit eine große Zahl feingranularer Konfigurationsregeln.
|
||||
6. **`UserRightsConst.cs` mit 2.819 Zeilen wurde nur strukturell ausgewertet.** Der vollständige Rechtekatalog mit mehreren hundert Einzelrechten ist nicht in Anforderungen überführt.
|
||||
7. **Die 1.535 Datenbanktabellen wurden stichprobenartig ausgewertet.** Die Anforderungen stützen sich auf 26 eindeutige Indizes, 154 CHECK-Constraints und 134 Fremdschlüssel; eine vollständige Durchsicht aller Tabellen fand nicht statt.
|
||||
8. **Die 491 Razor-Komponenten und 1.233 XAML-Dateien wurden nicht systematisch auf Bedienregeln geprüft.** Feldbezogene Regeln der Oberfläche (Pflichtfelder, Feldabhängigkeiten, Standardwerte) sind daher unterrepräsentiert.
|
||||
9. **Die 52 gespeicherten Prozeduren und 28 Datenbankfunktionen wurden nicht ausgewertet.** Sie können fachliche Regeln enthalten, die außerhalb des C#-Codes liegen.
|
||||
10. **Auffällige Bezeichnerfehler im Quellstand:** der Ordner `ReportEngine/PdfStategy` (statt `PdfStrategy`), die Methode `CreateNewReceiptForHelpdekTimers` (statt `Helpdesk`) und die doppelten Spalten `LandID`/`LandI3D` in `MwstSatz` sowie `OicdSubjectIdentifier`/`OpenIdConnectSubjectIdentifier` in `Sichbenu`. Sie sind einzeln zu klein für eine Anforderung, aber für eine Migration relevant.
|
||||
|
||||
### 4.6 Erkenntnisse für eine Folge-Iteration
|
||||
|
||||
Nach dem Ergebnis dieses Laufs lohnt ein Nachschlag an folgenden Stellen, geordnet nach erwartetem Erkenntnisgewinn:
|
||||
|
||||
1. **Die drei Bereiche ohne jeden `PRIMÄR`-Beleg schließen** (M-008 Umfragen, M-023 DATEV-Belegtransfer, M-085 Management Info). Der Aufwand ist gering, der Gewinn hoch, weil damit kein Modul mehr ausschließlich auf Struktur- und Oberflächenbelegen ruht.
|
||||
2. **Die 15 Hypothesen auflösen.** Jede benennt eine konkrete Codestelle, die zu öffnen ist. Besonders wichtig sind `SwRS-027` und `SwRS-055`: Belegversionierung und Speicherrepositories entscheiden darüber, ob eine Migration Belegdaten vollständig übernimmt.
|
||||
3. **`ReceiptBL` mit 11.441 Zeilen vollständig erschließen.** In diesem Lauf wurden rund 40 Methoden ausgewertet; die Klasse enthält erkennbar weitere Regeln zu Bestandsführung, automatischem Belegabschluss, Barcodezuordnung und Weiterführungsoptionen.
|
||||
4. **Den Rechtekatalog vollständig überführen.** Aus `UserRightsConst.cs` und der Tabelle `Sichrech` lässt sich ein vollständiges Berechtigungsmodell des Zielsystems ableiten; die Abweichung zwischen `CentronRights.md` und Code (Abschnitt 4.5, Punkt 3) macht eine Prüfung Recht für Recht erforderlich.
|
||||
5. **Die Migrationsskripte als Quelle fachlicher Regeln auswerten.** `ScriptMethodsCollection.cs` und die Skriptdateien enthalten Standardwerte, Rechtevergaben und Datenkorrekturen, die sonst nirgends dokumentiert sind.
|
||||
6. **Einen aktuellen Datenbankabzug beistellen.** Der vorliegende Abzug ist gegenüber dem Code veraltet; ein Abgleich Tabelle für Tabelle würde die Zahl der datenbezogenen `PRIMÄR`-Belege deutlich erhöhen.
|
||||
7. **Die Preisfindung zusammenhängend untersuchen.** Artikelpreis, Staffelpreis, Aktionspreis, Kundensonderpreis, Projektpreis und Vertragspreis wirken zusammen; die Rangfolge ist bisher nur teilweise belegt (`SyRS-031`) und ist für eine Neuimplementierung erfolgskritisch.
|
||||
8. **Die Oberflächenregeln erschließen.** XAML- und Razor-Dateien enthalten Pflichtfeld- und Sichtbarkeitsregeln, die im Backend nicht gespiegelt sind; ohne sie fehlt der Neuimplementierung ein Teil des Bedienverhaltens.
|
||||
|
||||
---
|
||||
|
||||
## 5. Bekannte Lücken
|
||||
|
||||
### 5.1 Nicht auswertbare Artefaktarten
|
||||
|
||||
| Artefaktart | Status | Auswirkung |
|
||||
|---|---|---|
|
||||
| Change-Historie (Commit-Nachrichten) | **nicht auswertbar.** Das Arbeitsverzeichnis ist kein eigenständiges Repository; `git rev-parse --show-toplevel` liefert das übergeordnete Verzeichnis der Untersuchung, und `git log` für den Codeordner zeigt ausschließlich die Snapshot-Commits der Untersuchung selbst. | Keine `KONTEXT`-Belege aus der Entwicklungsgeschichte; Aussagen zu Workarounds und überholten Stellen stützen sich auf Codekommentare, Obsolete-Markierungen und Altordner. |
|
||||
| Tickets, Release Notes, Migrationsnotizen | **nicht vorhanden.** Im Arbeitsverzeichnis liegen keine solchen Dateien. | Die Einstufung `Übernahmewürdigkeit` beruht auf Codebefunden, nicht auf dokumentierten fachlichen Entscheidungen. |
|
||||
| Laufende Instanz, Datenbankzugriff | **nicht verfügbar** und nach Auftrag nicht vorauszusetzen. | Alle Aussagen sind statisch abgeleitet; kein Laufzeitverhalten geprüft. |
|
||||
| Binärartefakte (`assemblies/`, `nugets/`, `bin/`, `obj/`) | **nicht ausgewertet.** | Regeln in Fremdbibliotheken (unter anderem DevExpress, FastReport, NHibernate, das Lizenz-Client-Assembly `Centron.Office.Client`) sind nicht erfasst. |
|
||||
| Beigelegte Fremddokumentation (`COP API Dokumentation.pdf`, `EGIS API Dokumentation.zip`) | **nicht geöffnet.** | Die Anbindungen COP und EGIS sind nur über ihre Assembly-Struktur belegt. |
|
||||
|
||||
### 5.2 Bewusst nicht erfasste Bereiche
|
||||
|
||||
- **Delphi-Vorgängersystem.** Der Code enthält an mehreren Stellen Rücksichtnahmen auf eine Delphi-Anwendung (Spalten `FormName` und `FormCont` in `Sichrech`, die Versionskorrektur `TryFixCentronDelphiVersionNumber` in `LicenseManager`). Das Vorgängersystem selbst liegt nicht im Arbeitsverzeichnis; seine Regeln sind nicht erfasst.
|
||||
- **Riverbird-Produktlinie.** Objekte mit dem Präfix `RB` und die zahlreichen `Riversuite*`-Anwendungsarten gehören zu einer verbundenen, aber eigenständigen Produktlinie. Sie sind im Inventar über M-064 und M-126 vertreten, jedoch nicht vollständig erschlossen.
|
||||
- **Testinhalte als Regelquelle.** Die elf Testprojekte wurden als Struktur erfasst (SyRS-120, SwRS-120), ihre Testfälle jedoch nicht als Quelle fachlicher Regeln ausgewertet. Gerade die End-to-End-Tests enthalten belastbare Aussagen über erwartetes Verhalten.
|
||||
|
||||
### 5.3 Grenzen der Abdeckungseinstufung
|
||||
|
||||
Die Einstufung `tief`, `mittel`, `flach` misst die **Anzahl** der erzeugten Anforderungen, nicht deren fachliche Vollständigkeit. Ein Modul mit drei Anforderungen kann fachlich vollständig beschrieben sein (etwa M-110 Länderstammdaten), während M-009 Belegwesen mit 30 Anforderungen erkennbar unvollständig bleibt. Die Einstufung ist daher als Hinweis auf die Bearbeitungstiefe zu lesen, nicht als Vollständigkeitsaussage.
|
||||
|
||||
### 5.4 Nicht geprüfte Aussagen der Entwicklerdokumentation
|
||||
|
||||
Die Entwicklerdokumentation unter `docs/` wurde als Beleg zweiter Ordnung verwendet. Sie eröffnet ihre Beschreibung der Systemstruktur selbst mit dem Hinweis, dass es zahlreiche Stellen gibt, an denen die beschriebene Schichtung nicht eingehalten ist (`docs/getting-started/general-structure.md`). Wo eine Anforderung ausschließlich auf dieser Dokumentation beruht, ist sie als `[HYPOTHESE]` gekennzeichnet. Für die übrigen dokumentationsgestützten Aussagen gilt: Sie wurden gegen mindestens einen Codebefund gehalten, aber nicht Zeile für Zeile verifiziert.
|
||||
|
||||
---
|
||||
|
||||
## 6. Erzeugte Ergebnisdateien
|
||||
|
||||
| Datei | Inhalt |
|
||||
|---|---|
|
||||
| `StRS.md` | 100 Stakeholder-Anforderungen, gegliedert in 10 fachliche Abschnitte |
|
||||
| `SyRS.md` | 130 System-Anforderungen, gegliedert in 9 fachliche Abschnitte |
|
||||
| `SwRS.md` | 150 Software-Anforderungen, gegliedert in 9 fachliche Abschnitte |
|
||||
| `Traceability.md` | konsolidierte Verfolgbarkeitstabelle mit 249 Zeilen |
|
||||
| `Hypothesen.md` | 15 Hypothesen mit fehlender Information und offener Frage |
|
||||
| `Glossar.md` | 7 Begriffsgruppen mit Fundstellen im Arbeitsverzeichnis |
|
||||
| `Analysebericht.md` | dieser Bericht: Modulinventar, Abdeckungstabelle, Konsistenzcheck, Selbstbewertung, bekannte Lücken |
|
||||
|
||||
Die analysierte Codebasis wurde ausschließlich gelesen und nicht verändert.
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
# Glossar
|
||||
|
||||
Dieses Glossar erklärt die Domänenbegriffe, die in `StRS.md`, `SyRS.md` und `SwRS.md` verwendet werden. Jeder Eintrag nennt die Fundstelle im Arbeitsverzeichnis, aus der die Bedeutung abgeleitet wurde. Technische Bezeichner (Klassen, Methoden, Spalten) sind in ihrer Originalschreibweise belassen.
|
||||
|
||||
---
|
||||
|
||||
## 1. Grundbegriffe des Datenmodells
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **I3D** | Primärschlüsselspalte jeder Tabelle, `int IDENTITY(1,1)`, gruppierter Primärschlüssel. Die Abkürzung steht laut Entwicklerdokumentation für „ID 3develop". Fremdschlüsselspalten tragen das Suffix `I3D` mit vorangestelltem Namen der Zieltabelle. | `docs/guides/database/database-conventions.md`, Abschnitt Primary Key Convention |
|
||||
| **BaseEntity** | Abstrakte Basisklasse aller NHibernate-Entitäten; stellt die Eigenschaft `I3D` bereit. Entitäten dürfen keine Logik, keine Überschreibungen und keinen eigenen Konstruktor enthalten. | `docs/reference/architecture/dtos-and-entities.md` |
|
||||
| **Compact-Entität** | Verdichtete Lesesicht auf eine Entität mit weniger Feldern, erkennbar am Namenszusatz `Compact` (z. B. `EmployeeCompact`, `HelpdeskCompact`, `AppRightCompact`, `BarCodeCompact`, `MasterDataListCompact`). | `src/backend/Centron.Entities/Entities/` |
|
||||
| **DTO** | Übertragungsobjekt zwischen Web-Service und Client; Entitäten verlassen die BL-Schicht nicht. | `docs/reference/architecture/dtos-and-entities.md` |
|
||||
| **ObjectKind / CentronObjectKindNumeric** | Numerischer Objektartschlüssel. Verweise auf wechselnde Objektarten werden durchgängig als Paar aus Objektkennung und Objektart geführt (`ObjectI3D` + `ObjectKind`, im Belegprotokoll `AnlageI3D` + `AnlageArt`). | `SSMS_DB_SCHEMA.sql`, Tabelle `SimpleUrls`; `docs/reference/receipts/receipts-backend-architecture.md` |
|
||||
| **Soft Delete** | Löschmuster über die Spalten `IsDeleted`, `DeletedByI3D`, `DeletedDate`; der Datensatz bleibt erhalten. | `docs/guides/database/database-conventions.md`, Abschnitt Deletion Tracking |
|
||||
|
||||
## 2. Belegwesen
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Beleg (Receipt)** | Oberbegriff für die sieben Belegarten Angebot, Auftrag, Lieferschein, Abholschein, Rechnung, Gutschrift und Vertrag. Alle erben von `ReceiptBase`. | `src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptBase.cs` |
|
||||
| **Kopf / Position** | Zweiteilige Belegstruktur: eine Kopfzeile (`*Kopf`) mit den Belegdaten und beliebig viele Positionen (`*Pos`). | `docs/reference/receipts/receipts-backend-architecture.md` |
|
||||
| **AngKopf / AufKopf / LiefKopf / RechKopf / VertragKopf / GutKopf / AbholKopf** | Historische, deutschsprachige Kopftabellen für Angebot, Auftrag, Lieferschein, Rechnung, Vertrag, Gutschrift und Abholschein. Die zugehörigen Positionstabellen tragen die Endung `Pos`. | `SSMS_DB_SCHEMA.sql` |
|
||||
| **Offers / Orders / DeliveryLists / Invoices / Contracts / CreditVouchers / PickupLists** | Englischsprachige Datenbanksichten auf die vorgenannten Alttabellen; sie bilden die Zugriffsschicht der C#-Anwendung. | `docs/reference/receipts/receipts-backend-architecture.md`, Abschnitt Modern Views |
|
||||
| **Versionstabelle** | Tabelle mit der Endung `Versions`, strukturgleiche 1:1-Kopie der Ursprungstabelle, ergänzt um `OriginalI3D` und bei Positionstabellen `KopfVersionsI3D`. | `docs/reference/receipts/receipts-backend-architecture.md` |
|
||||
| **AnlageLog / AnlageArt** | Gemeinsame Protokolltabelle aller Belegarten; `AnlageArt` unterscheidet die Belegart (1 Angebot, 2 Auftrag, 3 Lieferschein, 4 Rechnung, 5 Abholschein, 6 Gutschrift, 22 Vertrag). | `docs/reference/receipts/receipts-backend-architecture.md` |
|
||||
| **Belegweiterführung (Forward)** | Überführung eines Belegs in den nachfolgenden Belegtyp unter Übernahme der Positionen, wahlweise begrenzt auf die noch verfügbare Menge. | `ReceiptBL.ForwardReceipt`, `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs` |
|
||||
| **Belegstatus (State)** | Systemseitiger Bearbeitungsstand eines Belegs, geführt im Feld `State` der Basisklasse. | `src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptBase.cs` |
|
||||
| **Anwenderdefinierter Belegstatus (ReceiptUserState)** | Frei konfigurierbarer Zusatzstatus je Belegart, unabhängig vom Systemstatus; je Belegart als Pflichtfeld einstellbar. | `ReceiptBL.UpdateReceiptUserState`; Einstellungsseite „Belegstatus" |
|
||||
| **ConcurrencyControlGuid** | Nebenläufigkeitsschlüssel am Beleg; jede punktuelle Änderung führt ihn als Parameter mit. | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs`, Signaturen der `Update*`-Methoden |
|
||||
| **Nummernkreis (NumberGroup)** | Zähler je Nummernart, Mandant und Filiale mit Wertebereich (`RangeFrom`, `RangeTo`), Schrittweite (`Interval`) und aktuellem Stand (`Current`). | `src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs` |
|
||||
| **Belegkondition** | Konditionsregel, die auf Belege angewendet wird; eigenes Stammdatenmodul. | `src/centron/Centron.WPF.UI/Modules/Administration/ReceiptConditions/` |
|
||||
| **Externe Belegnummer** | Belegnummer des Lieferanten an einem Einkaufsbeleg; wird auf Dubletten geprüft. | `ReceiptBL.ExternalReceiptNumberAlreadyExists` |
|
||||
|
||||
## 3. Verträge und Abrechnung
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Vertrag (ReceiptContract)** | Belegart für wiederkehrende Leistungen mit Laufzeit, Abrechnungsintervall, Abrechnungsart, Kontingent und automatischer Verlängerung. | `src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs` |
|
||||
| **Abrechnungsintervall** | Kombination aus `BillingIntervalKind` (Daily, Monthly, Quarterly, Yearly) und `BillingIntervalDuration`; die Abrechnung rechnet beides in Monate um. | `AutomaticFacturaBL.Contracts.cs` |
|
||||
| **Kontingent** | Im Vertrag vereinbartes Leistungsvolumen (Stunden oder Betrag) mit Verbrauchsfortschreibung, Restwertführung und Grenzwerten. | `ReceiptContract`; `docs/reference/receipts/contracts-backend.md` |
|
||||
| **Zwischenrechnung (DifferContingentInterval)** | Ausgleichsposition, wenn Kontingentintervall und Abrechnungsintervall voneinander abweichen; unterschieden werden `headMinorToContract`, `interimMinorToContract`, `headMajorToContract` und `interimMajorToContract`. | `AutomaticFacturaBL.Contracts.cs` |
|
||||
| **Klickabrechnung** | Abrechnung nach Zählerständen von Druck- und Kopiersystemen; das Zählerintervall ist unabhängig vom Abrechnungsintervall einstellbar. | Einstellungsseite „Klickabrechnung"; `AutomaticFacturaBL.Contracts.cs`, Filter `IsCounterIntervalActive` |
|
||||
| **Pauschalabrechnung (Flatrate Billing)** | Abrechnung eines Projekts zum vereinbarten Pauschalbetrag unabhängig vom erfassten Aufwand. | `ModuleRegistration.cs`, `FlatRateProjectAppModuleController` |
|
||||
| **Vereinfachte Ticketabrechnung (Timer Billing)** | Erzeugung eines Belegs unmittelbar aus ausgewählten berechenbaren Ticketzeiten. | `ReceiptBL.CreateNewReceiptForHelpdekTimers` |
|
||||
| **Provisionsschema** | Regelwerk zur Provisionsberechnung mit Empfängerrolle (`Receiver`), Bezugsquelle (`Source`) und Bezugsgröße (`Value`). | `SSMS_DB_SCHEMA.sql`, Constraints auf `ReceiptProvisionSchemaItems` |
|
||||
| **Mahnstufe (DunningLevel)** | Stand des Mahnverfahrens einer Rechnung: `None`, `Level1`, `Level2`, `Level3`; je Stufe werden Datum und Bearbeiter geführt. | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningRunBL.cs` |
|
||||
| **OPOS** | Offene Posten; Sicht auf noch nicht ausgeglichene Rechnungen, auch als Rückimport aus der Finanzbuchhaltung. | Modul `OposOverviewAppModuleController`; Einstellungsseite „OPOS Import" |
|
||||
| **SEPA / PAIN** | Verfahren und Dateiformate des europäischen Lastschriftverkehrs; unterstützt werden PAIN.008.001.01, .008.003.02, .008.001.02, .008.001.02 GBIC 3 und .008.001.08 GBIC 4. | `PaymentTransactionBL.GetInterfaceList` |
|
||||
| **SEPA-Mandat** | Einzugsermächtigung des Kunden, am Vertrag über `MandatI3D` geführt. | `ReceiptContract`; Einstellungsseite „SEPA Lastschrift" |
|
||||
| **ZUGFeRD / XRechnung** | Formate der elektronischen Rechnung. Das erzeugte Profil ergibt sich aus dem Vorhandensein einer Leitweg-Identifikationsnummer: ohne sie `EN16931`, mit ihr `XRechnung`. | `src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs` |
|
||||
| **Leitweg-ID** | Kennung des öffentlichen Rechnungsempfängers; steuert die Profilwahl der elektronischen Rechnung. | ebenda |
|
||||
| **Kontenrahmen** | Struktur der Buchhaltungskonten; je Filiale sind abweichende Erlös- und Aufwandskonten möglich. | `BookKeepingAccountSystemBL`, `BranchRevenueAndExpenseAccountBL` |
|
||||
| **Kostenstelle / Kostenträger** | Getrennte Stammdaten der Kostenrechnung (Tabellen `Kostenstellen` und `Kostentraeger`), je Belegart als Pflichtangabe einstellbar. | `IReceiptSpecificLogic.IsCostCenterNeeded` und `IsCostCarrierNeeded` |
|
||||
|
||||
## 4. Artikel, Lager und Beschaffung
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **ARTIK** | Historische Artikelstammtabelle mit eindeutigem Index `ARTIK0`. | `SSMS_DB_SCHEMA.sql` |
|
||||
| **Aktionspreis** | Zeitlich befristeter Preis eines Distributors oder Herstellers mit `GueltigAb` und `GueltigBis`. | `docs/reference/receipts/actionprice-system.md` |
|
||||
| **Staffelpreis** | Mengenabhängiger Preis; im Import über `DistributorArticleStagePrices` abgebildet. | `ArticleImportBL.SetStagePrices` |
|
||||
| **Sonderpreis** | Kundenindividueller Preis; Grundlage des Artikelangebots im Web-Shop. | `README.md`, Abschnitt WebCart |
|
||||
| **Warengruppe** | Klassifikation der Artikel; Tabellen `WAREN` und `UNTERWAREN`. | `SSMS_DB_SCHEMA.sql` |
|
||||
| **Nebenlager (Secondary Stock)** | Zusätzliches Lager neben dem Hauptlager mit eigenem Bestand je Artikel. | `SecondStockArticleBL`, Tabelle `NebenlagerArtikel` |
|
||||
| **Umbuchung (Rebook)** | Bestandsverlagerung zwischen Lagern oder Lagerorten mit Protokolleintrag. | `SecondStockArticleBL.RebookStockArticle`, `StockBL.WriteStockRebookLog` |
|
||||
| **Seriennummer / Barcode** | Eindeutige Kennung eines Einzelstücks mit Zustand, Lagerbezug, Belegzuordnung und Historie. | `src/backend/Centron.BL/Warehousing/BarcodeBL.cs` |
|
||||
| **Inventur** | Zählvorgang je Lager mit Abschluss je Lager und je Inventur; Zustände unter anderem `Closed` und `ClosedWithoutBC`. | `InventoryNewBL` |
|
||||
| **Kommissionierung** | Bereitstellung der Auftragsmengen im Lager mit Mengenrückmeldung an den Beleg, auch als Teilkommissionierung. | `ReceiptBL.UpdateReceiptQuantityPicked` |
|
||||
| **EDI** | Elektronischer Belegaustausch mit Distributoren über FTP, FTPS oder SFTP; unterstützt werden unter anderem ALSO, ALSO CH, Alltron, Herweck, Komsa und OpenTrans 2.1. | `docs/reference/edi/edi-architecture.md` |
|
||||
| **Distributor** | Großhändler, von dem Artikel- und Preisdaten sowie Belege bezogen werden. | `ArticleImportBL`, `SupplierEdiBL` |
|
||||
| **TradePool** | Überbetrieblicher Artikelpool, getrennt vom eigenen Artikelstamm geführt. | `src/backend/Centron.BL/TradePool/` |
|
||||
| **Bestellvorschlagsliste** | Aus Bedarf, Bestand und Einstellungen abgeleitete Vorschläge für Lieferantenbestellungen. | `OrderSuggestionListBL` |
|
||||
| **WE-Kalkulation** | Kalkulation der Einstandskosten beim Wareneingang, geführt als Lieferanten-Rechnung. | Einstellungsseite „WE-Kalkulation (Lieferanten-Rechnung)" |
|
||||
|
||||
## 5. Service und Kundenbeziehung
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Helpdesk / Ticket** | Serviceanfrage mit Typ, Kategorie, Priorität, Status, Bearbeitern und Historie; Tabelle `hlpdsk_requests`. | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs` |
|
||||
| **Helpdesk-Timer** | Erfasste Arbeitszeit am Ticket, unterschieden in berechenbar und nicht berechenbar (`Calculable`); Tabelle `hlpdsk_timer`. | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs` |
|
||||
| **IsAssignedToAsset** | Merkmal einer Ticketzeit, das anzeigt, dass sie bereits einem Beleg zugewiesen wurde; solche Zeiten sind nicht löschbar. | `HelpdeskTimerBL.DeleteHelpdeskTimer` |
|
||||
| **C-FLOW / Ticketprozessvorlage** | Vorlage für wiederkehrende Serviceabläufe mit Schritten und Bindungen; kundenbezogen zuordenbar. | `CentronRights.md`, Abschnitt 17; `ProcessBL` |
|
||||
| **Checkliste** | Vorlagenbasierte Punkteliste am Ticket mit eigenem Änderungsprotokoll und Bearbeiter je Punkt. | `src/backend/Centron.BL/CheckListArea/` |
|
||||
| **Erwartetes Event** | Je Konto definiertes Ereignis mit Protokoll über das Eintreffen; ausbleibende Ereignisse erscheinen in der Auswertung. | `ExpectedEventsBL` |
|
||||
| **Eskalation** | Regelbasierte Meldung überfälliger Vorgänge an definierte Empfängerrollen. | `src/backend/Centron.BL/Sales/Support/Escalation/` |
|
||||
| **RMA** | Rücksende- und Reparaturvorgang; je Ticket genau ein RMA-Vorgang, getrennt in Rücksendung zum Lieferanten (`SendBack`) und Rückgabe an den Kunden (`SendForth`). | `src/backend/Centron.BL/CustomerArea/RmaBL.cs` |
|
||||
| **8D-Report** | Strukturierter Qualitätsbericht in acht Disziplinen; Tabellen `hlpdsk_8DReport` und `hlpdsk_8DReportTexte`. | `SSMS_DB_SCHEMA.sql` |
|
||||
| **SelfCare-Formular** | Vom Kunden ausfüllbares Formular, aus dem nach hinterlegter Ticketvorlage ein Ticket und Folgeaktionen entstehen. | `SelfCareWebserviceBL` |
|
||||
| **Stammblatt (MasterDataList)** | Geräteakte beim Kunden mit Seriennummer und Positionen, überwiegend für Druck- und Kopiersysteme. | `src/backend/Centron.Entities/Entities/Sales/Receipts/MasterDataLists/` |
|
||||
| **Konto-Gerät (AccountDevice)** | Gerät am Kundenkonto mit eigenem Protokoll und Ticketzuordnung; zweite Datenhaltung neben dem Stammblatt. | `src/backend/Centron.BL/Devices/AccountDeviceBL.cs` |
|
||||
| **AssetManagement / DocuBoard** | Technisches Inventar der Kundensysteme mit Anwendungen, Diensten, Patchständen, Abhängigkeiten und SNMP-Prüfungen; dritte Datenhaltung für Geräte. | `SSMS_DB_SCHEMA.sql`, Tabellen `AssetManagement*` |
|
||||
| **MSP** | Managed Service Provider; Sammlung und Abgleich der beim Hersteller gebuchten Lizenzen mit den vertraglich vereinbarten Mengen. | `src/backend/Centron.Gateway/MspCollector/` |
|
||||
| **RMM (Riverbird)** | Externes Monitoringsystem, das Nutzungsmengen für die verbrauchsabhängige Vertragsabrechnung liefert. | `src/backend/Centron.BL/RiverDivo/RiverConnectionBL.cs` |
|
||||
| **Konto (Account)** | Geschäftspartner mit einer oder mehreren Rollen (Kunde, Lieferant, weitere Kontoarten); Zielstruktur gegenüber den Alttabellen `Kunden` und `Kreditor`. | `SSMS_DB_SCHEMA.sql`, Tabellen `Accounts`, `AccountTypeToAccounts` |
|
||||
| **Aktivität (AccountActivity)** | Dokumentierter Kundenkontakt mit Bezug zu Ansprechpartner, Kampagne, Aufgabe, Dokument und Beleg sowie einer Bewertung von 0 bis 5. | `SSMS_DB_SCHEMA.sql`, Constraint `CK_AccountActivities_Rating` |
|
||||
|
||||
## 6. Organisation, Rechte und Lizenzen
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **Mandant** | Oberste organisatorische Einheit; trägt Nummernkreise und Bankverbindungen. | `MandatorBL`, `NumberGroupBL` |
|
||||
| **Filiale (Branch)** | Untergliederung des Mandanten; an Beleg, Mitarbeiter, Rechtegruppe und Lager geführt. Eine fehlende Filialangabe gilt als Standardfiliale. | `ReceiptBL.CanUserCreateReceiptsInBranch` |
|
||||
| **Sichbenu** | Tabelle der Benutzerkonten mit Kennwort, Sperrzeitraum, Anmeldeverfahren, Zwei-Faktor-Angaben und letzten Anmeldedaten. | `SSMS_DB_SCHEMA.sql` |
|
||||
| **Sichrech / Sichgrup / Sichmemb / Sichtrus** | Tabellen des Rechtemodells: Recht, Gruppe, Gruppenmitgliedschaft, Gruppen-Recht-Zuordnung. | `SSMS_DB_SCHEMA.sql`; `AppRightsBL.CheckRightsFromUser` |
|
||||
| **Recht (I3D)** | Nummerisch identifizierte Berechtigung mit Elternverweis (`OwnerRecht`), Kinderzähler und Veraltungskennzeichen; .NET-Rechte beginnen bei 20800000. | `UserRightsConst.cs` |
|
||||
| **Einschränkendes Recht (restricting right)** | Recht, das den Datenzugriff verengt statt ihn zu gewähren, z. B. „nur eigene" oder „nur eigene Filiale". | `CentronRights.md` |
|
||||
| **Rechtegruppe** | Träger der Rechtevergabe; Benutzer erhalten Rechte ausschließlich über Gruppenmitgliedschaft. | `AppRightsBL` |
|
||||
| **Administratorgruppe** | Gruppe mit der Bezeichnung „Administratoren" bzw. der Kennung 6; nicht löschbar, nur eine festgelegte Rechtemenge ist an ihr änderbar. | `AppRightsBL.DeleteRightGroup`, `GetAssignableAdminRightI3Ds` |
|
||||
| **Lizenz-GUID** | Kennung eines lizenzierbaren Merkmals oder einer Anwendung; kann Anzahl, Ablaufdatum und Höchstversion tragen. | `docs/reference/security/licensing-system.md`; `LicenseGuids.cs` |
|
||||
| **ApplicationKind** | Anwendungsart, die sich am Web-Service anmelden darf; trägt Lizenz-GUID, Sitzungsdauer, Lizenzverbrauchsart sowie erforderliches oder ausschließendes Recht. | `src/backend/Centron.Interfaces/Administration/Logins/ApplicationKind.cs` |
|
||||
| **Verbindungsticket (ConnectionTicket)** | Sitzungsnachweis mit Ablaufzeit; Standardgültigkeit 30 Minuten, für Monitoringkonnektoren 5 Minuten, für Tagesanwendungen 1.440 Minuten. | `src/backend/Centron.BL/Administration/Logins/TicketBL.cs` |
|
||||
| **Zugriffstoken (Access Token)** | Persönlicher API-Schlüssel; 48 Zeichen, nur als SHA-256-Hash gespeichert, mit Ablauf, Sperre und Nutzungsprotokoll. | `src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs` |
|
||||
| **Web-Konto (WebAccount)** | Kundenzugang mit eigenem Rechtekatalog (`WebAccountRightsConst`), getrennt vom Mitarbeiterkonto. | `AppRightsBL.CheckWebRightsFromUser`; `WebAccountBL` |
|
||||
| **Zusatzfeld (Custom Property)** | Kundenindividuell definiertes Feld je Modul mit Datentyp; der Datentyp `EncryptedText` wird verschlüsselt abgelegt. | `ModuleCustomPropertyBL`; `PasswordManagerBL` |
|
||||
| **Textbaustein** | Wiederverwendbarer Textblock; Anrede und Grußformel werden beim Belegneuanlegen eingesetzt. | `src/backend/Centron.BL/TextModuleArea/` |
|
||||
| **DSGVO-Löschung** | Anonymisierung eines personenbezogenen Datensatzes mit dem Kennzeichnungstext „DSGVO: Auf Anfrage gelöscht." samt Bearbeiter und Zeitpunkt. | `src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs` |
|
||||
|
||||
## 7. Anwendungen, Dienste und Architekturbegriffe
|
||||
|
||||
| Begriff | Bedeutung | Fundstelle |
|
||||
|---|---|---|
|
||||
| **c-entron.NET** | Windows-Client (WPF) mit vollem Funktionsumfang. | `src/centron/Centron.WPF.UI/` |
|
||||
| **c-entron Web-Service** | Serverdienst mit Fachlogik, REST-Schnittstellen, Echtzeitdiensten und Hintergrunddiensten. | `src/webservice/Centron.Host/` |
|
||||
| **c-entron Nexus** | Blazor-Server-Portal mit ServiceBoard (Mitarbeiter) und WebCart/Kundenportal (Endkunden). | `src/nexus/CentronNexus/` |
|
||||
| **ServiceBoard** | Webbasierter Arbeitsplatz für Servicemitarbeiter; je Benutzer lizenziert, über ein Sperrrecht entziehbar. | `ApplicationKind.ServiceBoard`; `src/nexus/CentronNexus/ServiceBoard/` |
|
||||
| **WebCart** | Web-Shop für Endkunden; das Artikelangebot ergibt sich aus den Sonderpreisen des Kunden. | `README.md`; `src/nexus/CentronNexus/WebCart/` |
|
||||
| **MyDay / Mein Tag** | Tagesübersicht je Mitarbeiter aus Terminen, Zeiten und Aufgaben, ergänzt um Importe aus Fremdsystemen. | `src/backend/Centron.BL/MyDay/` |
|
||||
| **Data Updater / Massenupdate** | Werkzeug für massenhafte Preis- und Datenänderungen über gespeicherte Vorlagen mit vorheriger Anzeige der betroffenen Datensätze. | `src/backend/Centron.BL/MassUpdate/MassUpdateBL.cs` |
|
||||
| **ILogic / BLLogic / WSLogic** | Namenskonvention der clientseitigen Datenzugriffsschicht: Schnittstelle, Umsetzung mit direktem Datenbankzugriff, Umsetzung über den Web-Service. | `docs/getting-started/general-structure.md` |
|
||||
| **ClassContainer** | Dienstbehälter des Clients, der zur Laufzeit die passende Umsetzung einer Logikschnittstelle bereitstellt. | ebenda |
|
||||
| **Result / Result<T>** | Einheitliches Ergebnisobjekt mit Status (`Success`, `Warning`, `Error`), Meldung und optionalem Fehlercode aus `DefaultMessageCodes`. | `docs/reference/architecture/results-and-responses.md` |
|
||||
| **DAOSession** | Sitzungsobjekt des Datenzugriffs; bündelt NHibernate-Sitzung, generischen Zugriff, benannte Abfragen und Zwischenspeicher. | `src/backend/Centron.DAO/DAOSession.cs` |
|
||||
| **GenericDAO** | Generischer Datenzugriff je Entitätstyp mit `GetById`, `GetEntityList`, `SaveOrUpdate` und `Delete`. | `src/backend/Centron.DAO/GenericDAO.cs` |
|
||||
| **Benannte Abfrage (NamedQuery)** | Vordefinierte SQL-Abfrage aus `NamedQueryPool.xml`, aufgerufen über `NamedQueryEnums`. | `src/backend/Centron.DAO/NamedQueries/` |
|
||||
| **Skriptnummer / DBUpdate** | Fortlaufende Nummer einer Schemamigration; ausgeführte Nummern stehen in der Tabelle `DBUpdate` und werden nicht erneut ausgeführt. | `src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs` |
|
||||
| **ApplicationSettings / Stammdat** | Aktuelle und historische Einstellungstabelle; neue Einstellungen gehören ausschließlich in `ApplicationSettings`. | `docs/guides/development/settings-management.md` |
|
||||
| **ManagedBackgroundService** | Basisklasse aller Hintergrunddienste; gibt Startverzögerung, Schaltbarkeit über die Datenbank, Startzeitmeldung und Fehlerrücklauf vor. | `src/webservice/Centron.Host/AspNetCore/HostedServices/ManagedBackgroundService.cs` |
|
||||
| **DataQualityService** | Stündlich laufender Dienst, der Dateninkonsistenzen bereinigt; Aufgabenmethoden tragen das Präfix `DataQuality`. | `docs/Background Service/DataQualityService.md` |
|
||||
| **DeveloperSecurity** | Schutzmechanismus, der in Nicht-Release-Ständen alle externen E-Mail-Empfänger durch eine feste Ersatzadresse ersetzt. | `src/backend/Centron.Common/DeveloperSecurity.cs` |
|
||||
+292
@@ -0,0 +1,292 @@
|
||||
# Hypothesen
|
||||
|
||||
Diese Datei enthält **genau** die Anforderungen, die in `StRS.md`, `SyRS.md` oder `SwRS.md` inline mit `[HYPOTHESE]` gekennzeichnet sind und deren Feld `Status` mit `HYPOTHESE` beginnt. Sie enthält keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung stehen in der Selbstbewertung des `Analysebericht.md` (Abschnitt 5.5).
|
||||
|
||||
**Anzahl:** 15 von 379 Anforderungen (4.0 %).
|
||||
|
||||
## 1. Übersicht
|
||||
|
||||
| ID | Ebene | Titel | Offene Frage in einem Satz |
|
||||
|---|---|---|---|
|
||||
| StRS-034 | StRS | Verbrauchsabhängige Vertragsabrechnung aus externen Nutzungsdaten | Bricht die Vertragsabrechnung tatsächlich vollständig ab, wenn der RMM-Dienst keine Nutzungsdaten liefert? |
|
||||
| StRS-035 | StRS | Klickabrechnung für Druck- und Kopiersysteme | Wie genau wird die Zählerdifferenz gebildet und als Rechnungsposition eingestellt? |
|
||||
| StRS-048 | StRS | Belege und Belegbilder an DATEV übertragen | Welche Daten werden beim DATEV-Belegtransfer übertragen und wie wird der Erfolg quittiert? |
|
||||
| StRS-093 | StRS | Bestellungen des Kunden über den Web-Shop | Aus welcher Quelle bezieht der Web-Shop die für einen Kunden sichtbaren Artikel? |
|
||||
| SyRS-019 | SyRS | Lieferantenverträge über eigene Logik- und Web-Service-Kette | Erfüllen BLAccountContractsLogic und WSAccountContractsLogic tatsächlich dieselbe Signatur? |
|
||||
| SyRS-023 | SyRS | Umfragen mit Seitenstruktur und Anhängen | Wie sind Umfrageseiten und Anhänge im Datenmodell abgebildet? |
|
||||
| SyRS-026 | SyRS | Belegversionierung über strukturgleiche Versionstabellen | Wie bildet die Versionierung zur Laufzeit die Feldliste und wie verhält sie sich bei fehlenden Spalten? |
|
||||
| SyRS-039 | SyRS | Abbruch der Rechnungserzeugung bei unvollständigen Nutzungsdaten | An welcher Codestelle wird die Rechnungserzeugung bei fehlenden Nutzungsdaten abgebrochen? |
|
||||
| SyRS-056 | SyRS | EDI-Dateien werden nur einmal verarbeitet | Wie ermittelt der EDI-Import die bereits verarbeiteten Dateien? |
|
||||
| SyRS-057 | SyRS | EDI-Protokolle werden befristet aufbewahrt | Wo ist die Aufbewahrungsfrist von 185 Tagen für EDI-Protokolle im Code hinterlegt? |
|
||||
| SwRS-012 | SwRS | Auflösung der Datenzugriffsschicht über einen Dienstbehälter | Nach welcher Regel registriert der ClassContainer die BL- und WS-Umsetzungen? |
|
||||
| SwRS-020 | SwRS | Lieferantenverträge über die dreiteilige Zugriffskette | Wie sind die drei Klassen der Zugriffskette für Lieferantenverträge tatsächlich ausgeprägt? |
|
||||
| SwRS-024 | SwRS | Umfragen mit eigener Seiten- und Einstellungsstruktur im Client | Welche Entitäten bilden Umfrage, Seite, Frage und Anhang ab? |
|
||||
| SwRS-027 | SwRS | Versionstabellen mit dynamisch gebildeter Feldliste | Wie erzeugt DoGetFieldList die Feldliste und welche Spalten schließt sie aus? |
|
||||
| SwRS-055 | SwRS | Lieferantenbelege mit eigenen Fachlogikordnern und Speicherrepositories | Welche Felder überführen die SaveReceipt-Repositories in die temporären Alt-Entitäten? |
|
||||
|
||||
## 2. Einzelaufstellung
|
||||
|
||||
### StRS-034 — Verbrauchsabhängige Vertragsabrechnung aus externen Nutzungsdaten
|
||||
|
||||
- **Ebene:** StRS
|
||||
- **Typ:** Schnittstelle
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Bei der Rechnungserzeugung ruft die Vertragsabrechnung RiverConnectionBL.GetContractBillingAmounts(von, bis, kundenI3D, rmmArticleReferences) auf und setzt die ermittelten Mengen an der Position des Platzhalters @@RMMArtikel@@ ein. Ist der externe Dienst nicht erreichbar und werden RMM-Artikel erwartet, wird eine RMMServiceUnavailableException geworfen und die Rechnungserzeugung abgebrochen.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll Nutzungsmengen aus einem externen Monitoringsystem übernehmen, daraus Rechnungspositionen bilden und die Rechnungserzeugung abbrechen, wenn die Nutzungsdaten nicht vollständig vorliegen.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/reference/receipts/Contract-Billing-RMM-Article-Logic.md, Abschnitt External Service Unavailability mit dem beschriebenen Abbruch über RMMServiceUnavailableException
|
||||
- `SEKUNDÄR` src/backend/Centron.BL/RiverDivo/RiverConnectionBL.cs
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die durchsetzende Codestelle CheckRMMArticle wurde im Arbeitsverzeichnis nicht geöffnet; zur Bestätigung fehlt die Einsicht in die Methode, die RMMServiceUnavailableException auslöst.
|
||||
|
||||
**Offene Frage:** Bricht die Vertragsabrechnung tatsächlich vollständig ab, wenn der RMM-Dienst keine Nutzungsdaten liefert?
|
||||
|
||||
### StRS-035 — Klickabrechnung für Druck- und Kopiersysteme
|
||||
|
||||
- **Ebene:** StRS
|
||||
- **Typ:** funktional
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Es existieren ein Modul DeviceClickCounterAppModuleController unter dem Kommentar Klick-Zählerverwaltung, eine Einstellungsseite ClickBillingSettingsController mit Caption Klickabrechnung sowie die Entitäten MasterDataListCompact und MasterDataListItemsCompact im Ordner Sales/CustomerAssets/Contracts/ClickContracts.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll Zählerstände von Druck- und Kopiersystemen erfassen und die Differenz zum Vorzeitraum als abrechenbare Menge in die Vertragsabrechnung übernehmen.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` src/centron/Centron.WPF.UI/Modules/Finances/Contracts/Settings/ClickBilling/ClickBillingSettingsController.cs
|
||||
- `SEKUNDÄR` src/backend/Centron.Entities/Entities/Sales/CustomerAssets/Contracts/ClickContracts/
|
||||
- `SEKUNDÄR` src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Registrierung von DeviceClickCounterAppModuleController
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Es fehlt die Einsicht in die Codestelle, die die Zählerdifferenz bildet und als Rechnungsposition einstellt; belegt sind bisher nur Modul, Einstellungsseite und Entitäten.
|
||||
|
||||
**Offene Frage:** Wie genau wird die Zählerdifferenz gebildet und als Rechnungsposition eingestellt?
|
||||
|
||||
### StRS-048 — Belege und Belegbilder an DATEV übertragen
|
||||
|
||||
- **Ebene:** StRS
|
||||
- **Typ:** Schnittstelle
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Es existieren das Client-Modul DatevOnlineAppModuleController unter dem Kommentar Datev Belegtransfer im Ordner Modules/DataExchange/DatevOnline2020 sowie eine Einstellungsseite DatevOnlineSettingsController.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll Belege einschließlich Belegbild an DATEV übertragen, damit die Buchhaltung ohne Medienbruch arbeiten kann.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Registrierung von DatevOnlineAppModuleController unter dem Kommentar Datev Belegtransfer
|
||||
- `SEKUNDÄR` src/centron/Centron.WPF.UI/Modules/DataExchange/BookKeeping/Settings/DatevOnline/DatevOnlineSettingsController.cs
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Es fehlt die Einsicht in die übertragende Codestelle des DATEV-Belegtransfers; belegt sind bisher nur Modulregistrierung und Einstellungsseite.
|
||||
|
||||
**Offene Frage:** Welche Daten werden beim DATEV-Belegtransfer übertragen und wie wird der Erfolg quittiert?
|
||||
|
||||
### StRS-093 — Bestellungen des Kunden über den Web-Shop
|
||||
|
||||
- **Ebene:** StRS
|
||||
- **Typ:** funktional
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Der Nexus-Bereich WebCart umfasst WebCartShopPage, WebCartCartPage, WebCartHomePage, WebCartAdminPage sowie Kundenportalseiten für Belege, Verträge, Tickets und Dokumente. Die Anwendungsart WebCart trägt eine eigene Lizenz-GUID und die Ablaufart ExpirationKind.FromSettings. Eine Einstellungsseite WebCartSettingsAppModuleController mit Caption E-mails existiert im Client.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll Endkunden einen Web-Shop bereitstellen, dessen Artikelangebot sich aus den für den Kunden hinterlegten Sonderpreisen ergibt, und aus dem Warenkorb einen Beleg erzeugen.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `PRIMÄR` src/backend/Centron.Interfaces/Administration/Logins/ApplicationKind.cs, Definition WebCart mit eigener Lizenz-GUID und ExpirationKind.FromSettings (Zeile 50)
|
||||
- `SEKUNDÄR` README.md, Abschnitt Contributing / WebCart mit dem Hinweis, dass die verfügbaren Artikel aus den Sonderpreisen des Kunden stammen und der Zugang über ein Web-Konto erfolgt
|
||||
- `SEKUNDÄR` src/nexus/CentronNexus/WebCart/WebCartShopPage.razor und WebCartCartPage.razor
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die Regel, dass das Artikelangebot des Shops aus den Kundensonderpreisen stammt, ist nur in der README beschrieben; es fehlt die Codestelle, die die Artikelliste des Shops ermittelt.
|
||||
|
||||
**Offene Frage:** Aus welcher Quelle bezieht der Web-Shop die für einen Kunden sichtbaren Artikel?
|
||||
|
||||
### SyRS-019 — Lieferantenverträge über eigene Logik- und Web-Service-Kette
|
||||
|
||||
- **Ebene:** SyRS
|
||||
- **Typ:** Schnittstelle
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Für Lieferantenverträge besteht die vollständige Kette IAccountContractsLogic, BLAccountContractsLogic (Zugriff über BLSession und AccountContractWebServiceBL) und WSAccountContractsLogic (Zugriff über ICentronWebServiceConnection). Der Aufruf erfolgt im Client über ClassContainer.Instance.WithInstance((IAccountContractsLogic logic) => ...).
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll Lieferantenverträge über eine eigene Logikschnittstelle bereitstellen, die sowohl den direkten Datenbankzugriff als auch den Zugriff über den Web-Service bedient.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/getting-started/general-structure.md, vollständiges Codebeispiel mit IAccountContractsLogic, BLAccountContractsLogic und WSAccountContractsLogic
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die Klassen BLAccountContractsLogic und WSAccountContractsLogic wurden nicht geöffnet; belegt ist nur das Codebeispiel der Entwicklerdokumentation.
|
||||
|
||||
**Offene Frage:** Erfüllen BLAccountContractsLogic und WSAccountContractsLogic tatsächlich dieselbe Signatur?
|
||||
|
||||
### SyRS-023 — Umfragen mit Seitenstruktur und Anhängen
|
||||
|
||||
- **Ebene:** SyRS
|
||||
- **Typ:** funktional
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Der Modulordner Modules/Survey enthält die Unterordner Pages und SurveySettings; die Einstellungsseite trägt die Beschriftung Umfragen Anhänge.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll Umfragen in Seiten gliedern und je Umfrage Anhänge zulassen.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` src/centron/Centron.WPF.UI/Modules/Survey/Pages/ und src/centron/Centron.WPF.UI/Modules/Survey/SurveySettings/SurveySettingsController.cs
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Es fehlt die Einsicht in die Umfrageentitäten und deren Seitenzuordnung; belegt sind nur Ordnernamen und die Einstellungsseite.
|
||||
|
||||
**Offene Frage:** Wie sind Umfrageseiten und Anhänge im Datenmodell abgebildet?
|
||||
|
||||
### SyRS-026 — Belegversionierung über strukturgleiche Versionstabellen
|
||||
|
||||
- **Ebene:** SyRS
|
||||
- **Typ:** Daten
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Zu jeder Kopf- und Positionstabelle existiert eine gleichnamige Versionstabelle mit dem Zusatz Versions. Diese ist eine 1:1-Kopie ohne I3D, ergänzt um OriginalI3D und bei Positionstabellen um KopfVersionsI3D. Die Feldliste wird zur Laufzeit über DoGetFieldList() gebildet; fehlt eine Spalte in der Versionstabelle, schlägt das Einfügen fehl.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll Belegversionen durch vollständiges Kopieren von Kopf und Positionen in strukturgleiche Versionstabellen bilden.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/reference/receipts/receipts-backend-architecture.md, Abschnitte Version Tables und Adding New Columns mit dem ausdrücklichen Hinweis auf Laufzeitfehler bei fehlenden Spalten sowie den INSERT-Mustern
|
||||
- `PRIMÄR` src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methode CreateNewVersion<T>
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die kopierende Codestelle AssetHeadDAO.SaveAssetVersion wurde nicht geöffnet; belegt ist nur die Entwicklerdokumentation.
|
||||
|
||||
**Offene Frage:** Wie bildet die Versionierung zur Laufzeit die Feldliste und wie verhält sie sich bei fehlenden Spalten?
|
||||
|
||||
### SyRS-039 — Abbruch der Rechnungserzeugung bei unvollständigen Nutzungsdaten
|
||||
|
||||
- **Ebene:** SyRS
|
||||
- **Typ:** funktional
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Bei der Rechnungserzeugung wird CheckRMMArticle aufgerufen. Liefert RiverConnectionBL.GetContractBillingAmounts einen Fehlerstatus und werden RMM-Artikel erwartet, wird eine RMMServiceUnavailableException geworfen und die Erzeugung abgebrochen. Die Positionierung der erzeugten Positionen erfolgt am Platzhalter @@RMMArtikel@@, ersatzweise an vorletzter Stelle.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll keine Rechnung erzeugen, wenn erwartete verbrauchsabhängige Nutzungsdaten nicht vollständig abgerufen werden können.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/reference/receipts/Contract-Billing-RMM-Article-Logic.md, Abschnitte RMM Article Detection, Usage Data Retrieval und Error Handling for Service Unavailability mit den zitierten Codeausschnitten
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die Codestelle CheckRMMArticle mit dem Abbruch ueber RMMServiceUnavailableException wurde nicht geöffnet; belegt ist nur das Codezitat der Entwicklerdokumentation.
|
||||
|
||||
**Offene Frage:** An welcher Codestelle wird die Rechnungserzeugung bei fehlenden Nutzungsdaten abgebrochen?
|
||||
|
||||
### SyRS-056 — EDI-Dateien werden nur einmal verarbeitet
|
||||
|
||||
- **Ebene:** SyRS
|
||||
- **Typ:** funktional
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Der Downloadvorgang ermittelt zunächst über UsedFiles(config) die bereits verarbeiteten Dateien und überspringt sie beim Durchlauf der Serverdateien; zusätzlich kann eine erwartete Datei vorgegeben werden, sodass abweichende Dateien übersprungen werden. Der Zugriff erfolgt je nach Konfiguration über Ftp_DownloadAsync oder sFtp_DownloadAsync.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll bereits verarbeitete EDI-Dateien erkennen und nicht erneut einlesen sowie FTP, FTPS und SFTP als Transportwege unterstützen.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/reference/edi/edi-import-rules.md, Abschnitt File Filtering mit dem zitierten Code zu UsedFiles(config) und der Übersprungbedingung
|
||||
- `PRIMÄR` src/backend/Centron.BL/EDI/SupplierEDI/SupplierEdiBL.cs
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die Methode UsedFiles und die Filterschleife in SupplierEdiBL wurden nicht geöffnet; belegt ist nur das Codezitat der Entwicklerdokumentation.
|
||||
|
||||
**Offene Frage:** Wie ermittelt der EDI-Import die bereits verarbeiteten Dateien?
|
||||
|
||||
### SyRS-057 — EDI-Protokolle werden befristet aufbewahrt
|
||||
|
||||
- **Ebene:** SyRS
|
||||
- **Typ:** nicht-funktional
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Der EDI-Downloaddienst läuft alle 30 Minuten mit einer Minute Startverzögerung; Protokolleinträge älter als 185 Tage werden zwischen 00:00 und 02:00 Uhr gelöscht. Die Protokollierung erfolgt über EDILogBL.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Das System soll EDI-Protokolleinträge für einen festgelegten Zeitraum aufbewahren und danach in einem verkehrsarmen Zeitfenster löschen.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/reference/edi/edi-import-rules.md, Abschnitt Execution Frequency mit 30 Minuten Takt, 1 Minute Startverzögerung und Löschung nach 185 Tagen im Zeitfenster 00:00 bis 02:00
|
||||
- `PRIMÄR` src/webservice/Centron.Host/AspNetCore/HostedServices/EdiDownloadService.cs
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die Codestelle, die die Aufbewahrungsfrist von 185 Tagen und das Zeitfenster umsetzt, wurde nicht geöffnet; belegt ist nur die Entwicklerdokumentation.
|
||||
|
||||
**Offene Frage:** Wo ist die Aufbewahrungsfrist von 185 Tagen für EDI-Protokolle im Code hinterlegt?
|
||||
|
||||
### SwRS-012 — Auflösung der Datenzugriffsschicht über einen Dienstbehälter
|
||||
|
||||
- **Ebene:** SwRS
|
||||
- **Typ:** Schnittstelle
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Der Client löst Datenzugriffe über ClassContainer.Instance.WithInstance((I<Modul>Logic logic) => logic.<Methode>(...)) auf und wertet das Ergebnis über ThrowIfError() aus. Die Registrierung erfolgt laut Dokumentation automatisch, wenn die Namenskonvention I*Logic, BL*Logic und WS*Logic eingehalten ist. Module deklarieren über SupportsConnectionTypes, welche Verbindungsarten sie unterstützen.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Die Software soll die Auswahl zwischen direktem Datenbankzugriff und Web-Service-Zugriff über einen Dienstbehälter treffen, der die Umsetzung anhand der Namenskonvention zuordnet.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/getting-started/general-structure.md, Abschnitte ClassContainer and ILogic Pattern und Connection Type Support mit dem Codebeispiel
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die Registrierungsklasse des ClassContainer und die automatische Zuordnung nach Namenskonvention wurden nicht geöffnet; belegt ist nur die Entwicklerdokumentation.
|
||||
|
||||
**Offene Frage:** Nach welcher Regel registriert der ClassContainer die BL- und WS-Umsetzungen?
|
||||
|
||||
### SwRS-020 — Lieferantenverträge über die dreiteilige Zugriffskette
|
||||
|
||||
- **Ebene:** SwRS
|
||||
- **Typ:** Schnittstelle
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Die Dokumentation zeigt die vollständige Kette am Beispiel der Lieferantenverträge: IAccountContractsLogic mit Task<Result<IList<AccountContractDTO>>> GetAccountContracts(GetAccountContractsFilter) und Task<Result<AccountContractDTO>> SaveAccountContract(AccountContractDTO); BLAccountContractsLogic mit Task.Run und BLSession sowie session.GetBL<AccountContractWebServiceBL>(); WSAccountContractsLogic mit CallWebServiceMethodWithListResultAsync.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Die Software soll je Modul eine asynchrone Logikschnittstelle mit Result-Rückgabe, eine datenbanknahe und eine dienstnahe Umsetzung bereitstellen.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/getting-started/general-structure.md, vollständige Codebeispiele für IAccountContractsLogic, BLAccountContractsLogic und WSAccountContractsLogic
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die Klassen der dreiteiligen Zugriffskette für Lieferantenvertraege wurden nicht geöffnet; belegt sind nur die Codebeispiele der Entwicklerdokumentation.
|
||||
|
||||
**Offene Frage:** Wie sind die drei Klassen der Zugriffskette für Lieferantenverträge tatsächlich ausgeprägt?
|
||||
|
||||
### SwRS-024 — Umfragen mit eigener Seiten- und Einstellungsstruktur im Client
|
||||
|
||||
- **Ebene:** SwRS
|
||||
- **Typ:** funktional
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Der Modulordner Modules/Survey gliedert sich in Pages und SurveySettings; die Einstellungsseite trägt die Beschriftung Umfragen Anhänge.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Die Software soll Umfrageseiten und Umfrageeinstellungen als getrennte Bestandteile des Moduls führen.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` src/centron/Centron.WPF.UI/Modules/Survey/Pages/ und .../SurveySettings/
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Es fehlt die Einsicht in die Umfrageentitäten; belegt ist nur die Ordnerstruktur des Moduls.
|
||||
|
||||
**Offene Frage:** Welche Entitäten bilden Umfrage, Seite, Frage und Anhang ab?
|
||||
|
||||
### SwRS-027 — Versionstabellen mit dynamisch gebildeter Feldliste
|
||||
|
||||
- **Ebene:** SwRS
|
||||
- **Typ:** Daten
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Die Feldliste für das Einfügen in die Versionstabelle wird zur Laufzeit über DoGetFieldList() gebildet. Fehlt in der Versionstabelle eine Spalte der Ursprungstabelle, schlägt das Einfügen zur Laufzeit fehl. Die Entwicklerdokumentation führt dazu eine zehnstufige Prüfliste für das Hinzufügen neuer Belegspalten und weist ausdrücklich darauf hin, dass der Speicherweg über SaveReceipt*Repository und temporäre Alt-Entitäten läuft und nicht über die moderne Entitätszuordnung.
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Die Software soll die Feldliste der Belegversionierung aus dem Schema ableiten und die Strukturgleichheit von Ursprungs- und Versionstabelle voraussetzen.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/reference/receipts/receipts-backend-architecture.md, Abschnitte Adding New Columns - Complete Checklist mit zehn Schritten sowie Critical Warning und Critical Save Warning
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die Methode DoGetFieldList und die SaveReceipt-Repositories wurden nicht geöffnet; belegt ist nur die Entwicklerdokumentation.
|
||||
|
||||
**Offene Frage:** Wie erzeugt DoGetFieldList die Feldliste und welche Spalten schließt sie aus?
|
||||
|
||||
### SwRS-055 — Lieferantenbelege mit eigenen Fachlogikordnern und Speicherrepositories
|
||||
|
||||
- **Ebene:** SwRS
|
||||
- **Typ:** Daten
|
||||
|
||||
**Belegte Beobachtung (Fakt):** Unter Sales/Receipts bestehen die Ordner SupplierOrders, SupplierDeliveryLists, SupplierInvoices, SupplierCreditVouchers und SupplierReceiptDocuments. Laut Entwicklerdokumentation existieren je Belegart eigene Speicherrepositories, die die modernen Entitäten in temporäre Alt-Entitäten überführen; die Übernahme neuer Felder erfolgt in SynchronizeReceiptData (Kopf) und SynchronizeReceiptItemData (Position).
|
||||
|
||||
**Vermutete Aussage:** [HYPOTHESE] Die Software soll je Belegart ein eigenes Speicherrepository führen, das die Überführung in die Persistenzstruktur an genau zwei benannten Stellen vornimmt.
|
||||
|
||||
**Vorliegende Belege:**
|
||||
|
||||
- `SEKUNDÄR` docs/reference/receipts/receipts-backend-architecture.md, Abschnitt Repository Pattern mit den Methodennamen SynchronizeReceiptData und SynchronizeReceiptItemData und dem Hinweis, dass AutoMapper und die moderne Zuordnung auf diesem Weg nicht greifen
|
||||
|
||||
**Fehlende Information zur Bestätigung:** Die SaveReceipt-Repositories fuer Lieferantenbelege wurden nicht geöffnet; belegt ist nur die Entwicklerdokumentation.
|
||||
|
||||
**Offene Frage:** Welche Felder überführen die SaveReceipt-Repositories in die temporären Alt-Entitäten?
|
||||
|
||||
+2235
File diff suppressed because it is too large
Load Diff
+3145
File diff suppressed because it is too large
Load Diff
+2783
File diff suppressed because it is too large
Load Diff
+270
@@ -0,0 +1,270 @@
|
||||
# Traceability — konsolidierte Verfolgbarkeitstabelle
|
||||
|
||||
**Erzeugt aus:** den Feldern `Tracelinks` der Anforderungen in `StRS.md`, `SyRS.md` und `SwRS.md`.
|
||||
|
||||
## 1. Lesehinweise
|
||||
|
||||
- Die Tabelle ist **beidseitig** aufgebaut: Sie entsteht aus den Vorwärtsverweisen der StRS- und SyRS-Anforderungen **und** aus den Rückwärtsverweisen der SyRS- und SwRS-Anforderungen. Ein Bezug gilt als bestehend, sobald er auf einer der beiden Seiten angegeben ist.
|
||||
- Ein Bindestrich bedeutet, dass auf dieser Ebene kein Bezug angegeben ist. Das ist zulässig, wenn eine Anforderung nur auf zwei Ebenen ausgeprägt ist.
|
||||
- Die Spalte `Artefaktbeleg` enthält den ersten `PRIMÄR`-Beleg der Anforderung der jeweils rechtesten belegten Ebene; liegt kein `PRIMÄR`-Beleg vor, den ersten Beleg überhaupt.
|
||||
|
||||
## 2. Kennzahlen
|
||||
|
||||
- Zeilen der Tabelle: 249
|
||||
- StRS-Anforderungen: 100, davon mit mindestens einem SyRS-Bezug: 100
|
||||
- SyRS-Anforderungen: 130, davon mit mindestens einem StRS-Bezug: 130
|
||||
- SwRS-Anforderungen: 150, davon mit mindestens einem SyRS-Bezug: 150
|
||||
|
||||
## 3. Tabelle
|
||||
|
||||
| StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg |
|
||||
|---|---|---|---|
|
||||
| StRS-001 | SyRS-001 | SwRS-001 | src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptBase.cs |
|
||||
| StRS-001 | SyRS-002 | SwRS-002 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methoden CreateNewReceipt (Zeile 775), CopyReceipt (Zeile 1377 und 1383) und ForwardReceipt (Zeile 1548) |
|
||||
| StRS-002 | SyRS-003 | SwRS-003 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Aufruf BranchBL.IsBranchEqual(appUser.Employee.BranchI3D, receiptBranchI3D) in CanUserEditReceipt |
|
||||
| StRS-003 | SyRS-004 | SwRS-004 | src/backend/Centron.BL/Administration/Logins/UsersBL.cs, Zugriff LocalizedStrings.UsersBL_IsValidAppUserPassword_DasPasswortIstZuKurz |
|
||||
| StRS-004 | SyRS-005 | SwRS-005 | src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs, Schnittstelle ILicenseManager mit CheckLicense und GetLicenseCount |
|
||||
| StRS-004 | SyRS-005 | SwRS-080 | SSMS_DB_SCHEMA.sql, CREATE TABLE [dbo].[ConnectionTickets] und CREATE UNIQUE NONCLUSTERED INDEX [idx_ConnectionTickets_UniqueLogin] |
|
||||
| StRS-004 | SyRS-006 | SwRS-005 | src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs, Schnittstelle ILicenseManager mit CheckLicense und GetLicenseCount |
|
||||
| StRS-004 | SyRS-006 | SwRS-132 | src/backend/Centron.BL/VideoPortal/VideoPortalAssignmentBL.cs |
|
||||
| StRS-004 | SyRS-041 | SwRS-042 | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Methoden GetRightsForModule und IsModuleAvailable<T> sowie die Verwendung von ModuleRegistrationItem.For<T> |
|
||||
| StRS-004 | SyRS-100 | SwRS-101 | src/backend/Centron.BL/MyDay/ mit MyDayBL.cs, MyDayNotificationsBL.cs, ReportConnections.cs und ReportRecord.cs |
|
||||
| StRS-004 | SyRS-114 | SwRS-114 | src/backend/Centron.BL/ArtificialIntelligence/ mit IApiClient.cs, ApiClientFactory.cs, IMessage.cs, AiHttpModelCatalogClient.cs und AiApiLinkValidator.cs |
|
||||
| StRS-004 | SyRS-124 | SwRS-123 | src/apis/ mit den acht Assemblies und ihren Unterordnern Parser, SoapTemplates und RequestTemplates |
|
||||
| StRS-004 | SyRS-124 | SwRS-124 | src/backend/Centron.Interfaces/Administration/Logins/ApplicationKind.cs mit den statischen schreibgeschützten Einträgen und ihren Kennungen |
|
||||
| StRS-004 | SyRS-124 | SwRS-135 | src/backend/Centron.BL/ExternalHelpdesk/ExternalHelpdeskConfigurationBL.cs und src/backend/Centron.BL/Sales/Support/ExternalHelpdeskConfigurationBL.cs |
|
||||
| StRS-004 | SyRS-124 | SwRS-136 | src/backend/Centron.BL/DataExchange/TelekomDive/TelekomDiveBL.cs, Methoden mit Listen und Filter |
|
||||
| StRS-004 | SyRS-124 | SwRS-137 | Centron.Api.docuFORM/IDocuFormApiClient.cs und DocuFormRestApiClient.cs |
|
||||
| StRS-004 | SyRS-124 | SwRS-138 | src/backend/Centron.BL/DataExchange/Connectors/ mit den fünf DocBee-Klassen und WebHookClient.cs |
|
||||
| StRS-004 | SyRS-130 | SwRS-130 | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Abbruch bei rights.Status == ResultStatus.Error vor der Registrierung |
|
||||
| StRS-005 | SyRS-006 | SwRS-005 | src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs, Schnittstelle ILicenseManager mit CheckLicense und GetLicenseCount |
|
||||
| StRS-005 | SyRS-006 | SwRS-132 | src/backend/Centron.BL/VideoPortal/VideoPortalAssignmentBL.cs |
|
||||
| StRS-005 | SyRS-007 | SwRS-006 | src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs, Methode CheckRightsFromUser mit NamedQueryParameter("UserI3D", ...) und NamedQueryParameter("RightI3Ds", rights, NHibernateUtil.Int32, true) |
|
||||
| StRS-005 | SyRS-008 | SwRS-007 | SSMS_DB_SCHEMA.sql, CREATE TABLE [dbo].[Sichrech] mit I3D als [int] NOT NULL ohne IDENTITY sowie OwnerRecht, NumChildren und Obsolete |
|
||||
| StRS-006 | SyRS-009 | SwRS-008 | src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs, Rückgaben ShowHelpdeskRight.OnlyOwn, .OnlyOwnBranch, .All und .None |
|
||||
| StRS-006 | SyRS-071 | SwRS-071 | src/backend/Centron.BL/TicketProjects/TicketProjectBL.cs |
|
||||
| StRS-007 | SyRS-010 | SwRS-009 | src/backend/Centron.BL/Administration/Rights/AppRightsBL.cs, Erzeugung von AppRightLog mit Kind, Object, Description und CreatedVersion |
|
||||
| StRS-007 | SyRS-011 | SwRS-010 | src/backend/Centron.DAO/ChangeTracking/ChangeTrackingEventListener.cs |
|
||||
| StRS-007 | SyRS-011 | SwRS-143 | src/backend/Centron.DAO/ mit DAOSession.cs, GenericDAO.cs, AdvancedSession.cs und dem Ordner NamedQueries |
|
||||
| StRS-007 | SyRS-011 | SwRS-144 | src/backend/Centron.Entities/Entities/ mit 1.179 Dateien und src/backend/Centron.DAO/Mappings/ mit 983 Dateien |
|
||||
| StRS-007 | SyRS-084 | SwRS-085 | src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs, Methode Delete mit token.IsActive = false, token.IsDeleted = true, DeletedBy und DeletedDate |
|
||||
| StRS-007 | SyRS-110 | SwRS-107 | src/webservice/Centron.Host/AspNetCore/HostedServices/ManagedBackgroundService.cs mit den genannten Vorgaben |
|
||||
| StRS-007 | SyRS-128 | SwRS-128 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methode UpdateReceiptHourlySurchargeRateI3D mit Verweisfeld |
|
||||
| StRS-008 | SyRS-012 | SwRS-011 | src/backend/Centron.BL/Administration/Logins/UsersBL.cs, Verwendung von Result.AsError, Result.AsWarning, Result.AsSuccess und Result.FromException(ex) in einer Methode |
|
||||
| StRS-008 | SyRS-012 | SwRS-012 | docs/getting-started/general-structure.md, Abschnitte ClassContainer and ILogic Pattern und Connection Type Support mit dem Codebeispiel |
|
||||
| StRS-008 | SyRS-019 | SwRS-012 | docs/getting-started/general-structure.md, Abschnitte ClassContainer and ILogic Pattern und Connection Type Support mit dem Codebeispiel |
|
||||
| StRS-008 | SyRS-019 | SwRS-020 | docs/getting-started/general-structure.md, vollständige Codebeispiele für IAccountContractsLogic, BLAccountContractsLogic und WSAccountContractsLogic |
|
||||
| StRS-008 | SyRS-104 | SwRS-105 | src/webservice/Centron.Host/Services/ mit ICentronRestService.Obsolete.cs und CentronRestService.Obsolete.cs |
|
||||
| StRS-008 | SyRS-104 | SwRS-106 | src/webservice/Centron.Controllers/ mit den Ordnern Controllers/v1, Authorization, Common, Configuration |
|
||||
| StRS-008 | SyRS-129 | SwRS-129 | src/backend/Centron.BL/Administration/Connections/ConnectionBL.cs, Methoden ConvertToCentronConnection und ConvertToConnectionFileItem mit XmlSerializer |
|
||||
| StRS-009 | SyRS-013 | SwRS-013 | src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs, Zuweisung propertyValue.ValueEncryptedString = null vor der Rückgabe |
|
||||
| StRS-009 | SyRS-085 | SwRS-086 | src/backend/Centron.Common/TextCoding/AESCryptoLogic.cs, Methode GetKeyAndIV mit Buffer.BlockCopy(hash, 0, key, 0, 32) und Buffer.BlockCopy(hash, 5, iv, 0, 16) sowie der Konstante SECURITY_KEY |
|
||||
| StRS-009 | SyRS-085 | SwRS-145 | src/backend/Centron.Common/ und src/shared/Centron.Core/ mit den genannten Ordnern |
|
||||
| StRS-010 | SyRS-014 | SwRS-014 | src/backend/Centron.BL/Administration/Scripts/ScriptMethods/ScriptMethodsCollection.cs |
|
||||
| StRS-011 | SyRS-015 | SwRS-015 | SSMS_DB_SCHEMA.sql, Fremdschlüssel FK_AccountAddresses_Accounts, FK_AccountAddressContacts_AccountAddresses, FK_AccountLogs_Accounts und FK_AccountOrderProcessingContracts_Documents |
|
||||
| StRS-011 | SyRS-015 | SwRS-016 | src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs, Sonderprüfungen gegen dbo.Kunden und dbo.Kreditor |
|
||||
| StRS-012 | SyRS-016 | SwRS-017 | SSMS_DB_SCHEMA.sql, die aufgeführten Fremdschlüssel auf [dbo].[AccountActivities] einschließlich FK_AccountActivities_Taetigkeiten |
|
||||
| StRS-012 | SyRS-016 | SwRS-068 | src/backend/Centron.BL/Processes/ProcessBL.cs, generische Signaturen mit T : ProcessDTO, new() und Parametern objectI3D und objectKind |
|
||||
| StRS-012 | SyRS-016 | SwRS-112 | src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs, Aufruf DeleteReference(timerI3D, CentronObjectKindNumeric.HelpdeskTimerClass) |
|
||||
| StRS-012 | SyRS-016 | SwRS-131 | src/backend/Centron.BL/Tags/TagsBL.cs, Methoden GetActiveTags und GetTag mit Parameter includeInactive |
|
||||
| StRS-013 | SyRS-017 | SwRS-018 | src/backend/Centron.BL/Sales/Customers/CrmProjects/ und src/backend/Centron.BL/Projects/ProjectBL.cs |
|
||||
| StRS-014 | SyRS-018 | SwRS-019 | src/backend/Centron.BL/Mailings/MailingTemplateBL.cs und MailingDataBL.cs |
|
||||
| StRS-014 | SyRS-121 | SwRS-121 | src/backend/Centron.BL/Mail/ mit den genannten Unterordnern und Klassen |
|
||||
| StRS-015 | SyRS-019 | SwRS-012 | docs/getting-started/general-structure.md, Abschnitte ClassContainer and ILogic Pattern und Connection Type Support mit dem Codebeispiel |
|
||||
| StRS-015 | SyRS-019 | SwRS-020 | docs/getting-started/general-structure.md, vollständige Codebeispiele für IAccountContractsLogic, BLAccountContractsLogic und WSAccountContractsLogic |
|
||||
| StRS-016 | SyRS-020 | SwRS-021 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Prüfung typeof(IReceiptItemWithMasterDataListSerialNumberI3D).IsAssignableFrom(receipt.ReceiptKind.GetReceiptItemType()) in CheckForMasterDataListConsumables |
|
||||
| StRS-017 | SyRS-021 | SwRS-022 | src/backend/Centron.Entities/Entities/Devices/ und src/backend/Centron.Entities/Entities/DocuBoard/ |
|
||||
| StRS-017 | SyRS-021 | SwRS-134 | src/backend/Centron.BL/ItPlanner/ChecklistVirtualObjectCategoryBL.cs mit den genannten Methoden |
|
||||
| StRS-018 | SyRS-022 | SwRS-023 | src/webservice/Centron.Host/AspNetCore/HostedServices/PlmImportService.cs |
|
||||
| StRS-019 | SyRS-023 | SwRS-024 | src/centron/Centron.WPF.UI/Modules/Survey/Pages/ und .../SurveySettings/ |
|
||||
| StRS-020 | SyRS-024 | SwRS-025 | src/shared/Centron.Controls/ mit den fachlichen Unterordnern, darunter ProductMatrix, PositionGrid, Checklist, PasswordManager, EmployeeAnalytics und Telephony |
|
||||
| StRS-020 | SyRS-024 | SwRS-149 | src/centron/Centron.WPF.UI.Extension/ und src/shared/Centron.Controls/ mit den genannten Ordnern |
|
||||
| StRS-021 | SyRS-015 | SwRS-015 | SSMS_DB_SCHEMA.sql, Fremdschlüssel FK_AccountAddresses_Accounts, FK_AccountAddressContacts_AccountAddresses, FK_AccountLogs_Accounts und FK_AccountOrderProcessingContracts_Documents |
|
||||
| StRS-021 | SyRS-015 | SwRS-016 | src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs, Sonderprüfungen gegen dbo.Kunden und dbo.Kreditor |
|
||||
| StRS-021 | SyRS-025 | SwRS-026 | src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs, Schleife mit UpdateBuilder, Bedingung f.Current == numberGroupObject.Current und Prüfung rowCountChanged == 1 |
|
||||
| StRS-021 | SyRS-125 | SwRS-125 | src/backend/Centron.BL/TextModuleArea/ mit TextModuleBL.cs und SalutationAndAgreementReplacementBL.cs sowie src/backend/Centron.DAO/TextModuleArea/ |
|
||||
| StRS-022 | SyRS-026 | SwRS-027 | docs/reference/receipts/receipts-backend-architecture.md, Abschnitte Adding New Columns - Complete Checklist mit zehn Schritten sowie Critical Warning und Critical Save Warning |
|
||||
| StRS-023 | SyRS-027 | SwRS-028 | src/backend/Centron.BL/Sales/Receipts/IReceiptSpecificLogic.cs, Mitglieder TryLockReceipt (Zeile 85) und UnLockReceipt (Zeile 91) |
|
||||
| StRS-024 | SyRS-028 | SwRS-029 | src/backend/Centron.BL/Sales/Receipts/SpecificLogics.cs und IReceiptSpecificLogic.cs |
|
||||
| StRS-024 | SyRS-028 | SwRS-150 | SSMS_DB_SCHEMA.sql, CREATE TABLE [dbo].[Zahkond] mit LaenPer1, Skonto1, LaenPer2, Skonto2, LaenPer3 und den belegartbezogenen Gültigkeitsspalten GltAnge, GltAuf, GltSer, GltLief, GltRech, GltGuts und GltAbhol |
|
||||
| StRS-025 | SyRS-029 | SwRS-030 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Aufruf this._accountBL.GetAccountRelatedInformations(...).FirstOrDefault() mit Rückgabe info.DunningLevel |
|
||||
| StRS-026 | SyRS-030 | SwRS-031 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Projektion auf f.SalesTaxIdentificationNumber und f.TaxNumber mit Prüfung hasOneOfTheNumbers sowie throw new NotSupportedException für Lieferantenbelege |
|
||||
| StRS-026 | SyRS-030 | SwRS-033 | src/backend/Centron.BL/Sales/Receipts/DataAndResults/SaveReceipt/SaveReceiptResultBuilder.cs, Methode SetMessage mit Filterung auf f != SaveReceiptErrorMissingField.None (Zeilen 62 bis 67) |
|
||||
| StRS-027 | SyRS-031 | SwRS-032 | src/backend/Centron.BL/Sales/Receipts/ReceiptPriceHelperBL.cs, ReceiptItemBL.cs und ReceiptItemSpecialArticleHelperBL.cs |
|
||||
| StRS-027 | SyRS-031 | SwRS-059 | src/backend/Centron.BL/Warehousing/ mit den genannten Klassen und Unterordnern |
|
||||
| StRS-027 | SyRS-031 | SwRS-148 | SSMS_DB_SCHEMA.sql, CREATE UNIQUE NONCLUSTERED INDEX [idx_AccountArticleSpecialPricesImportSettings_UniqueSettings] |
|
||||
| StRS-027 | SyRS-058 | SwRS-058 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methode UpdatePurchasePriceInReceipt mit Parameter saveUpdatedReceipt (Zeile 5566) |
|
||||
| StRS-028 | SyRS-030 | SwRS-031 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Projektion auf f.SalesTaxIdentificationNumber und f.TaxNumber mit Prüfung hasOneOfTheNumbers sowie throw new NotSupportedException für Lieferantenbelege |
|
||||
| StRS-028 | SyRS-030 | SwRS-033 | src/backend/Centron.BL/Sales/Receipts/DataAndResults/SaveReceipt/SaveReceiptResultBuilder.cs, Methode SetMessage mit Filterung auf f != SaveReceiptErrorMissingField.None (Zeilen 62 bis 67) |
|
||||
| StRS-028 | SyRS-032 | SwRS-033 | src/backend/Centron.BL/Sales/Receipts/DataAndResults/SaveReceipt/SaveReceiptResultBuilder.cs, Methode SetMessage mit Filterung auf f != SaveReceiptErrorMissingField.None (Zeilen 62 bis 67) |
|
||||
| StRS-028 | SyRS-127 | SwRS-127 | src/backend/Centron.BL/Warehousing/CostCenterBL.cs und CostObjectBL.cs |
|
||||
| StRS-029 | SyRS-033 | SwRS-034 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methoden GetHelpdeskInfosForReceipt (Zeile 4405) und CreateTicketsForReceipt (Zeile 4445) |
|
||||
| StRS-029 | SyRS-121 | SwRS-121 | src/backend/Centron.BL/Mail/ mit den genannten Unterordnern und Klassen |
|
||||
| StRS-030 | SyRS-034 | SwRS-035 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methoden CreateFullReportForReceipt, ArchiveInvoicePdf und AddReportToReceiptDocuments |
|
||||
| StRS-030 | SyRS-034 | SwRS-079 | src/backend/Centron.BL/ReportEngine/ mit den genannten Unterordnern und FastReportHelper.cs |
|
||||
| StRS-030 | SyRS-035 | SwRS-035 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methoden CreateFullReportForReceipt, ArchiveInvoicePdf und AddReportToReceiptDocuments |
|
||||
| StRS-031 | SyRS-036 | SwRS-036 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Typprüfungen receipt is IReceiptWithContingent contingent und receipt is not IReceiptWithUserState receiptWithUserState sowie receipt is not IReceiptWithProvision receiptWithProvision |
|
||||
| StRS-031 | SyRS-037 | SwRS-037 | src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs, Berechnungen mit 1.0 * und deutschsprachigen Feldnamen (Zeilen 1119, 1151, 1191, 1234) |
|
||||
| StRS-031 | SyRS-037 | SwRS-038 | src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs, Verwendung von billingParam und SearchBillingContractsFilter in GetActiveContracts und SearchBillingContracts |
|
||||
| StRS-032 | SyRS-037 | SwRS-037 | src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs, Berechnungen mit 1.0 * und deutschsprachigen Feldnamen (Zeilen 1119, 1151, 1191, 1234) |
|
||||
| StRS-032 | SyRS-037 | SwRS-038 | src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs, Verwendung von billingParam und SearchBillingContractsFilter in GetActiveContracts und SearchBillingContracts |
|
||||
| StRS-033 | SyRS-036 | SwRS-036 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Typprüfungen receipt is IReceiptWithContingent contingent und receipt is not IReceiptWithUserState receiptWithUserState sowie receipt is not IReceiptWithProvision receiptWithProvision |
|
||||
| StRS-033 | SyRS-038 | SwRS-037 | src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.Contracts.cs, Berechnungen mit 1.0 * und deutschsprachigen Feldnamen (Zeilen 1119, 1151, 1191, 1234) |
|
||||
| StRS-033 | SyRS-038 | SwRS-039 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methode WriteReceiptLogs mit CreateContingentKindEntry, CreateContingentValueEntry und CreateContingentMinimalOrderAmountEntry jeweils mit altem und neuem Wert |
|
||||
| StRS-034 | SyRS-039 | SwRS-040 | src/backend/Centron.BL/RiverDivo/RiverConnectionBL.cs und SimpleRiverCentronClient.cs |
|
||||
| StRS-035 | SyRS-020 | SwRS-021 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Prüfung typeof(IReceiptItemWithMasterDataListSerialNumberI3D).IsAssignableFrom(receipt.ReceiptKind.GetReceiptItemType()) in CheckForMasterDataListConsumables |
|
||||
| StRS-035 | SyRS-040 | SwRS-041 | src/backend/Centron.Entities/Entities/Sales/CustomerAssets/Contracts/ClickContracts/MasterDataListCompact.cs und MasterDataListItemsCompact.cs |
|
||||
| StRS-036 | SyRS-041 | SwRS-042 | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Methoden GetRightsForModule und IsModuleAvailable<T> sowie die Verwendung von ModuleRegistrationItem.For<T> |
|
||||
| StRS-037 | SyRS-042 | SwRS-043 | src/backend/Centron.BL/Sales/Receipts/DataAndResults/CreateReceiptForHelpdeskTimers/CreateReceiptForHelpdeskTimersResult.cs und CreatePositionForHelpdeskTimerResult.cs |
|
||||
| StRS-038 | SyRS-043 | SwRS-044 | SSMS_DB_SCHEMA.sql, getrennte Tabellen ReceiptProvisionSchemaItems und ReceiptProvisionItems mit jeweils eigenen CHECK-Constraints |
|
||||
| StRS-039 | SyRS-043 | SwRS-044 | SSMS_DB_SCHEMA.sql, getrennte Tabellen ReceiptProvisionSchemaItems und ReceiptProvisionItems mit jeweils eigenen CHECK-Constraints |
|
||||
| StRS-040 | SyRS-044 | SwRS-045 | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Registrierung ausschließlich von ContractEvaluation2AppModuleController |
|
||||
| StRS-040 | SyRS-044 | SwRS-076 | src/backend/Centron.BL/Services/CachedTableBL.cs, Registrierung je Zwischentabelle mit eigener Aktualisierungsroutine |
|
||||
| StRS-041 | SyRS-045 | SwRS-046 | src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningRunBL.cs, SetValueForParameter für @CustomerI3D, @AddressI3D und @ContactI3D (Zeilen 363 bis 368) |
|
||||
| StRS-042 | SyRS-046 | SwRS-047 | src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs und DunningRunBL.cs, Verwendung von GrossPriceComplete, PayedGrossAmount, CreditVoucherGrossAmount sowie DunningLevelXDate und DunningLevelXEmployee |
|
||||
| StRS-043 | SyRS-047 | SwRS-048 | SSMS_DB_SCHEMA.sql, CREATE TABLE [dbo].[MwstSatz] mit den genannten Spalten |
|
||||
| StRS-043 | SyRS-050 | SwRS-051 | src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs, Methode GetBookkeepingReceiptKind mit throw new ResultException |
|
||||
| StRS-043 | SyRS-050 | SwRS-147 | src/backend/Centron.BL/Administration/BookKeepingAccountSystems/BookKeepingAccountSystemBL.cs und src/backend/Centron.BL/Administration/Company/BranchRevenueAndExpenseAccountBL.cs |
|
||||
| StRS-043 | SyRS-126 | SwRS-126 | src/backend/Centron.BL/CountryArea/CountryBL.cs, Methoden UpdateCurrencyRateByCountry und UpdateCurrencyRateByRateDictionary sowie GetInlandCountry(AppUser) |
|
||||
| StRS-044 | SyRS-048 | SwRS-049 | src/backend/Centron.BL/Finances/Payments/PaymentsBL.cs, Methode DeleteIncomingPayment(DeleteIncomingPaymentFilter, LoggedInUser) |
|
||||
| StRS-045 | SyRS-048 | SwRS-049 | src/backend/Centron.BL/Finances/Payments/PaymentsBL.cs, Methode DeleteIncomingPayment(DeleteIncomingPaymentFilter, LoggedInUser) |
|
||||
| StRS-045 | SyRS-049 | SwRS-050 | src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs, Methode GetInterfaceList mit den fünf Aufzählungswerten und Anzeigetexten sowie die Verzweigung für Sepa00800102GBIC3 und Sepa00800108GBIC4 (Zeilen 56 bis 66 und 182 bis 183) |
|
||||
| StRS-046 | SyRS-049 | SwRS-050 | src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs, Methode GetInterfaceList mit den fünf Aufzählungswerten und Anzeigetexten sowie die Verzweigung für Sepa00800102GBIC3 und Sepa00800108GBIC4 (Zeilen 56 bis 66 und 182 bis 183) |
|
||||
| StRS-047 | SyRS-046 | SwRS-047 | src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningBL.cs und DunningRunBL.cs, Verwendung von GrossPriceComplete, PayedGrossAmount, CreditVoucherGrossAmount sowie DunningLevelXDate und DunningLevelXEmployee |
|
||||
| StRS-047 | SyRS-050 | SwRS-051 | src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs, Methode GetBookkeepingReceiptKind mit throw new ResultException |
|
||||
| StRS-047 | SyRS-050 | SwRS-147 | src/backend/Centron.BL/Administration/BookKeepingAccountSystems/BookKeepingAccountSystemBL.cs und src/backend/Centron.BL/Administration/Company/BranchRevenueAndExpenseAccountBL.cs |
|
||||
| StRS-047 | SyRS-127 | SwRS-127 | src/backend/Centron.BL/Warehousing/CostCenterBL.cs und CostObjectBL.cs |
|
||||
| StRS-048 | SyRS-050 | SwRS-051 | src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs, Methode GetBookkeepingReceiptKind mit throw new ResultException |
|
||||
| StRS-048 | SyRS-050 | SwRS-147 | src/backend/Centron.BL/Administration/BookKeepingAccountSystems/BookKeepingAccountSystemBL.cs und src/backend/Centron.BL/Administration/Company/BranchRevenueAndExpenseAccountBL.cs |
|
||||
| StRS-049 | SyRS-051 | SwRS-052 | src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs, Knotenerzeugung über XmlDocument mit den genannten Hilfsmethoden |
|
||||
| StRS-050 | SyRS-052 | SwRS-053 | src/apis/Centron.APIs.FinAPI/ mit IFinApiClient.cs, FinApiClient.cs und den Ordnern Requests, Responses und RestClient |
|
||||
| StRS-051 | SyRS-053 | SwRS-054 | src/webservice/Centron.WebServices.Core/EntitiesWrongPlace/Administration/Rights/UserRightsConst.cs, mit [Obsolete] gekennzeichnete Konstanten RIGHT_BARRIGHT_NUNG und RIGHT_KASSENBUCH |
|
||||
| StRS-052 | SyRS-054 | SwRS-055 | docs/reference/receipts/receipts-backend-architecture.md, Abschnitt Repository Pattern mit den Methodennamen SynchronizeReceiptData und SynchronizeReceiptItemData und dem Hinweis, dass AutoMapper und die moderne Zuordnung auf diesem Weg nicht greifen |
|
||||
| StRS-053 | SyRS-055 | SwRS-056 | src/backend/Centron.BL/Purchasing/ mit OrderSuggestionListBL.cs, PurchaseSettingsBL.cs, SupplierOrderPerBranchBL.cs und Suppliers/SupplierBL.cs |
|
||||
| StRS-054 | SyRS-056 | SwRS-057 | src/backend/Centron.Gateway/ mit den Ordnern EDI_Alltron, EDI_Also, EDI_AlsoCH, EDI_EGIS, EDI_Herweck, EDI_Komsa, OpenTrans und OpenTrans1_0 |
|
||||
| StRS-054 | SyRS-057 | SwRS-057 | src/backend/Centron.Gateway/ mit den Ordnern EDI_Alltron, EDI_Also, EDI_AlsoCH, EDI_EGIS, EDI_Herweck, EDI_Komsa, OpenTrans und OpenTrans1_0 |
|
||||
| StRS-055 | SyRS-054 | SwRS-055 | docs/reference/receipts/receipts-backend-architecture.md, Abschnitt Repository Pattern mit den Methodennamen SynchronizeReceiptData und SynchronizeReceiptItemData und dem Hinweis, dass AutoMapper und die moderne Zuordnung auf diesem Weg nicht greifen |
|
||||
| StRS-055 | SyRS-058 | SwRS-058 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methode UpdatePurchasePriceInReceipt mit Parameter saveUpdatedReceipt (Zeile 5566) |
|
||||
| StRS-056 | SyRS-031 | SwRS-032 | src/backend/Centron.BL/Sales/Receipts/ReceiptPriceHelperBL.cs, ReceiptItemBL.cs und ReceiptItemSpecialArticleHelperBL.cs |
|
||||
| StRS-056 | SyRS-031 | SwRS-059 | src/backend/Centron.BL/Warehousing/ mit den genannten Klassen und Unterordnern |
|
||||
| StRS-056 | SyRS-031 | SwRS-148 | SSMS_DB_SCHEMA.sql, CREATE UNIQUE NONCLUSTERED INDEX [idx_AccountArticleSpecialPricesImportSettings_UniqueSettings] |
|
||||
| StRS-056 | SyRS-059 | SwRS-059 | src/backend/Centron.BL/Warehousing/ mit den genannten Klassen und Unterordnern |
|
||||
| StRS-056 | SyRS-115 | SwRS-115 | SSMS_DB_SCHEMA.sql, Fremdschlüssel FK_ArticleProductionStep_ARTIK und FK_ArticleProductionOrderStepItems_ArticleProductionOrders |
|
||||
| StRS-056 | SyRS-123 | SwRS-123 | src/apis/ mit den acht Assemblies und ihren Unterordnern Parser, SoapTemplates und RequestTemplates |
|
||||
| StRS-057 | SyRS-060 | SwRS-060 | src/backend/Centron.BL/Warehousing/ArticleManagement/ArticleImportBL.cs, Methoden SetArticleProperty und SetStagePrices mit Type type = typeof(...) und anschließender Eigenschaftsauflösung (Zeilen 715 bis 742 und 790 bis 831) |
|
||||
| StRS-057 | SyRS-060 | SwRS-148 | SSMS_DB_SCHEMA.sql, CREATE UNIQUE NONCLUSTERED INDEX [idx_AccountArticleSpecialPricesImportSettings_UniqueSettings] |
|
||||
| StRS-057 | SyRS-119 | SwRS-119 | src/backend/Centron.BL/TradePool/TradePoolBL.cs, Überladungen von GetTradeArticleList mit maxCountRecords, index und out int countOfRecords |
|
||||
| StRS-057 | SyRS-123 | SwRS-123 | src/apis/ mit den acht Assemblies und ihren Unterordnern Parser, SoapTemplates und RequestTemplates |
|
||||
| StRS-058 | SyRS-061 | SwRS-061 | src/backend/Centron.BL/Warehousing/BarcodeBL.cs, Methoden GetBarcodeByI3D (BarCode) und GetBarCode2ByI3D (BarCode2) |
|
||||
| StRS-058 | SyRS-072 | SwRS-072 | src/backend/Centron.BL/CustomerArea/RmaBL.cs, getrennte Methoden für RmaArticle, RmaArticleHistory, RmaSendForth und RmaSendBack |
|
||||
| StRS-058 | SyRS-116 | SwRS-116 | src/backend/Centron.BL/Warehousing/InventoryManagement/InventoryNewBL.cs, Prüfung inventory.State == InventoryState.ClosedWithoutBC \|\| inventory.State == InventoryState.Closed |
|
||||
| StRS-058 | SyRS-118 | SwRS-118 | src/backend/Centron.BL/Warehousing/BarcodeBL.cs, Methode ValidateNewVoucherBarcode(Article, string) neben ValidateNewBarcode(int, string) |
|
||||
| StRS-059 | SyRS-055 | SwRS-056 | src/backend/Centron.BL/Purchasing/ mit OrderSuggestionListBL.cs, PurchaseSettingsBL.cs, SupplierOrderPerBranchBL.cs und Suppliers/SupplierBL.cs |
|
||||
| StRS-059 | SyRS-059 | SwRS-059 | src/backend/Centron.BL/Warehousing/ mit den genannten Klassen und Unterordnern |
|
||||
| StRS-059 | SyRS-062 | SwRS-062 | src/backend/Centron.BL/Warehousing/SecondStockArticleBL.cs, Signaturen BookToStock mit appUserI3D (Zeile 551) und BookFromStock ohne Benutzerbezug (Zeile 601) |
|
||||
| StRS-059 | SyRS-116 | SwRS-116 | src/backend/Centron.BL/Warehousing/InventoryManagement/InventoryNewBL.cs, Prüfung inventory.State == InventoryState.ClosedWithoutBC \|\| inventory.State == InventoryState.Closed |
|
||||
| StRS-059 | SyRS-117 | SwRS-117 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Signatur UpdateReceiptQuantityPicked(..., IList<CommissionOrderItemInfoDTO> items) |
|
||||
| StRS-060 | SyRS-061 | SwRS-061 | src/backend/Centron.BL/Warehousing/BarcodeBL.cs, Methoden GetBarcodeByI3D (BarCode) und GetBarCode2ByI3D (BarCode2) |
|
||||
| StRS-060 | SyRS-063 | SwRS-063 | src/apis/Centron.Api.Gls/ und src/apis/Centron.Api.Shipcloud/ mit den genannten Dateien |
|
||||
| StRS-060 | SyRS-117 | SwRS-117 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Signatur UpdateReceiptQuantityPicked(..., IList<CommissionOrderItemInfoDTO> items) |
|
||||
| StRS-061 | SyRS-064 | SwRS-064 | src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs, Methode CheckTextFieldLengths mit den Truncate-Aufrufen und dem begleitenden Kommentar |
|
||||
| StRS-061 | SyRS-122 | SwRS-122 | src/backend/Centron.BL/MailScanner/MailScannerBL.cs, getrennte Methoden für Profile, Aufgaben, Abläufe und Protokolle |
|
||||
| StRS-062 | SyRS-065 | SwRS-065 | src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs, Methode DeleteHelpdeskTimer mit Task.Run und using var newSession = new DAOSession() für die Kalenderbereinigung |
|
||||
| StRS-062 | SyRS-112 | SwRS-112 | src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs, Aufruf DeleteReference(timerI3D, CentronObjectKindNumeric.HelpdeskTimerClass) |
|
||||
| StRS-062 | SyRS-128 | SwRS-128 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methode UpdateReceiptHourlySurchargeRateI3D mit Verweisfeld |
|
||||
| StRS-063 | SyRS-066 | SwRS-066 | src/backend/Centron.BL/WebServices/Sales/Support/HelpdeskTimerWebServiceBL.cs, Rechteprüfung mit throw new ResultException (Zeilen 360 bis 378) |
|
||||
| StRS-064 | SyRS-067 | SwRS-067 | src/backend/Centron.BL/CheckListArea/UpdateChecklistBL.cs und ChangeTracking/ChangeLogBL.cs |
|
||||
| StRS-065 | SyRS-068 | SwRS-068 | src/backend/Centron.BL/Processes/ProcessBL.cs, generische Signaturen mit T : ProcessDTO, new() und Parametern objectI3D und objectKind |
|
||||
| StRS-065 | SyRS-122 | SwRS-122 | src/backend/Centron.BL/MailScanner/MailScannerBL.cs, getrennte Methoden für Profile, Aufgaben, Abläufe und Protokolle |
|
||||
| StRS-066 | SyRS-069 | SwRS-069 | src/backend/Centron.BL/ExpectedEvents/ExpectedEventsBL.cs, getrennte Methoden SaveExpectedEvent und SaveExpectedEventLogEntry |
|
||||
| StRS-067 | SyRS-070 | SwRS-070 | src/backend/Centron.BL/TaskManager/ und src/backend/Centron.BL/ToDoArea/ToDoBL.cs |
|
||||
| StRS-068 | SyRS-071 | SwRS-071 | src/backend/Centron.BL/TicketProjects/TicketProjectBL.cs |
|
||||
| StRS-069 | SyRS-070 | SwRS-070 | src/backend/Centron.BL/TaskManager/ und src/backend/Centron.BL/ToDoArea/ToDoBL.cs |
|
||||
| StRS-069 | SyRS-072 | SwRS-072 | src/backend/Centron.BL/CustomerArea/RmaBL.cs, getrennte Methoden für RmaArticle, RmaArticleHistory, RmaSendForth und RmaSendBack |
|
||||
| StRS-070 | SyRS-073 | SwRS-073 | SSMS_DB_SCHEMA.sql, Tabellennamen hlpdsk_8DReport und hlpdsk_8DReportTexte |
|
||||
| StRS-071 | SyRS-074 | SwRS-074 | src/backend/Centron.BL/Sales/Support/Escalation/EscalationReceiversEnum.cs |
|
||||
| StRS-072 | SyRS-068 | SwRS-068 | src/backend/Centron.BL/Processes/ProcessBL.cs, generische Signaturen mit T : ProcessDTO, new() und Parametern objectI3D und objectKind |
|
||||
| StRS-072 | SyRS-075 | SwRS-075 | src/backend/Centron.BL/WebServices/SelfCare/SelfCareWebserviceBL.cs, Listenoperationen je Objektart |
|
||||
| StRS-073 | SyRS-044 | SwRS-045 | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Registrierung ausschließlich von ContractEvaluation2AppModuleController |
|
||||
| StRS-073 | SyRS-044 | SwRS-076 | src/backend/Centron.BL/Services/CachedTableBL.cs, Registrierung je Zwischentabelle mit eigener Aktualisierungsroutine |
|
||||
| StRS-073 | SyRS-076 | SwRS-076 | src/backend/Centron.BL/Services/CachedTableBL.cs, Registrierung je Zwischentabelle mit eigener Aktualisierungsroutine |
|
||||
| StRS-073 | SyRS-076 | SwRS-106 | src/webservice/Centron.Controllers/ mit den Ordnern Controllers/v1, Authorization, Common, Configuration |
|
||||
| StRS-074 | SyRS-077 | SwRS-077 | SSMS_DB_SCHEMA.sql, View [dbo].[cvw_EmployeeHelpdeskTimerStatistic] |
|
||||
| StRS-075 | SyRS-076 | SwRS-076 | src/backend/Centron.BL/Services/CachedTableBL.cs, Registrierung je Zwischentabelle mit eigener Aktualisierungsroutine |
|
||||
| StRS-075 | SyRS-076 | SwRS-106 | src/webservice/Centron.Controllers/ mit den Ordnern Controllers/v1, Authorization, Common, Configuration |
|
||||
| StRS-076 | SyRS-078 | SwRS-078 | src/backend/Centron.Gateway/MspCollector/Octopus und /Wortmann |
|
||||
| StRS-076 | SyRS-125 | SwRS-125 | src/backend/Centron.BL/TextModuleArea/ mit TextModuleBL.cs und SalutationAndAgreementReplacementBL.cs sowie src/backend/Centron.DAO/TextModuleArea/ |
|
||||
| StRS-077 | SyRS-034 | SwRS-035 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Methoden CreateFullReportForReceipt, ArchiveInvoicePdf und AddReportToReceiptDocuments |
|
||||
| StRS-077 | SyRS-034 | SwRS-079 | src/backend/Centron.BL/ReportEngine/ mit den genannten Unterordnern und FastReportHelper.cs |
|
||||
| StRS-077 | SyRS-079 | SwRS-079 | src/backend/Centron.BL/ReportEngine/ mit den genannten Unterordnern und FastReportHelper.cs |
|
||||
| StRS-078 | SyRS-080 | SwRS-080 | SSMS_DB_SCHEMA.sql, CREATE TABLE [dbo].[ConnectionTickets] und CREATE UNIQUE NONCLUSTERED INDEX [idx_ConnectionTickets_UniqueLogin] |
|
||||
| StRS-078 | SyRS-081 | SwRS-080 | SSMS_DB_SCHEMA.sql, CREATE TABLE [dbo].[ConnectionTickets] und CREATE UNIQUE NONCLUSTERED INDEX [idx_ConnectionTickets_UniqueLogin] |
|
||||
| StRS-078 | SyRS-081 | SwRS-081 | src/backend/Centron.BL/Administration/Logins/TwoFactor/ITwoFactorValidator.cs mit EmailTwoFactorValidator.cs und RadiusTwoFactorValidator.cs |
|
||||
| StRS-078 | SyRS-082 | SwRS-082 | SSMS_DB_SCHEMA.sql, CREATE TABLE [dbo].[Sichbenu] mit den genannten Spalten |
|
||||
| StRS-078 | SyRS-097 | SwRS-098 | src/nexus/CentronNexus.OutlookAddIn/ mit den fachlichen Unterordnern und dem Ordner Manifest |
|
||||
| StRS-078 | SyRS-114 | SwRS-114 | src/backend/Centron.BL/ArtificialIntelligence/ mit IApiClient.cs, ApiClientFactory.cs, IMessage.cs, AiHttpModelCatalogClient.cs und AiApiLinkValidator.cs |
|
||||
| StRS-078 | SyRS-124 | SwRS-123 | src/apis/ mit den acht Assemblies und ihren Unterordnern Parser, SoapTemplates und RequestTemplates |
|
||||
| StRS-078 | SyRS-124 | SwRS-124 | src/backend/Centron.Interfaces/Administration/Logins/ApplicationKind.cs mit den statischen schreibgeschützten Einträgen und ihren Kennungen |
|
||||
| StRS-078 | SyRS-124 | SwRS-135 | src/backend/Centron.BL/ExternalHelpdesk/ExternalHelpdeskConfigurationBL.cs und src/backend/Centron.BL/Sales/Support/ExternalHelpdeskConfigurationBL.cs |
|
||||
| StRS-078 | SyRS-124 | SwRS-136 | src/backend/Centron.BL/DataExchange/TelekomDive/TelekomDiveBL.cs, Methoden mit Listen und Filter |
|
||||
| StRS-078 | SyRS-124 | SwRS-137 | Centron.Api.docuFORM/IDocuFormApiClient.cs und DocuFormRestApiClient.cs |
|
||||
| StRS-078 | SyRS-124 | SwRS-138 | src/backend/Centron.BL/DataExchange/Connectors/ mit den fünf DocBee-Klassen und WebHookClient.cs |
|
||||
| StRS-079 | SyRS-081 | SwRS-080 | SSMS_DB_SCHEMA.sql, CREATE TABLE [dbo].[ConnectionTickets] und CREATE UNIQUE NONCLUSTERED INDEX [idx_ConnectionTickets_UniqueLogin] |
|
||||
| StRS-079 | SyRS-081 | SwRS-081 | src/backend/Centron.BL/Administration/Logins/TwoFactor/ITwoFactorValidator.cs mit EmailTwoFactorValidator.cs und RadiusTwoFactorValidator.cs |
|
||||
| StRS-080 | SyRS-082 | SwRS-082 | SSMS_DB_SCHEMA.sql, CREATE TABLE [dbo].[Sichbenu] mit den genannten Spalten |
|
||||
| StRS-081 | SyRS-083 | SwRS-083 | src/backend/Centron.BL/Administration/Logins/UsersBL.cs, Bedingung newPassword?.Length < appUser.PasswordMinLength && appUser.PasswordMinLength > 0 |
|
||||
| StRS-081 | SyRS-083 | SwRS-084 | src/backend/Centron.Common/TextCoding/SHA1Decoder.cs, Methode GetDecodedSHA1String mit SHA1.Create() und Encoding.GetEncoding(1252) ohne Salt |
|
||||
| StRS-081 | SyRS-083 | SwRS-085 | src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs, Methode Delete mit token.IsActive = false, token.IsDeleted = true, DeletedBy und DeletedDate |
|
||||
| StRS-082 | SyRS-083 | SwRS-083 | src/backend/Centron.BL/Administration/Logins/UsersBL.cs, Bedingung newPassword?.Length < appUser.PasswordMinLength && appUser.PasswordMinLength > 0 |
|
||||
| StRS-082 | SyRS-083 | SwRS-084 | src/backend/Centron.Common/TextCoding/SHA1Decoder.cs, Methode GetDecodedSHA1String mit SHA1.Create() und Encoding.GetEncoding(1252) ohne Salt |
|
||||
| StRS-082 | SyRS-083 | SwRS-085 | src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs, Methode Delete mit token.IsActive = false, token.IsDeleted = true, DeletedBy und DeletedDate |
|
||||
| StRS-082 | SyRS-084 | SwRS-085 | src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs, Methode Delete mit token.IsActive = false, token.IsDeleted = true, DeletedBy und DeletedDate |
|
||||
| StRS-083 | SyRS-013 | SwRS-013 | src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs, Zuweisung propertyValue.ValueEncryptedString = null vor der Rückgabe |
|
||||
| StRS-083 | SyRS-085 | SwRS-086 | src/backend/Centron.Common/TextCoding/AESCryptoLogic.cs, Methode GetKeyAndIV mit Buffer.BlockCopy(hash, 0, key, 0, 32) und Buffer.BlockCopy(hash, 5, iv, 0, 16) sowie der Konstante SECURITY_KEY |
|
||||
| StRS-083 | SyRS-085 | SwRS-145 | src/backend/Centron.Common/ und src/shared/Centron.Core/ mit den genannten Ordnern |
|
||||
| StRS-084 | SyRS-086 | SwRS-087 | src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs, Methoden DoDeleteCustomer (Zeile 856), DoDeleteSupplier (Zeile 935) und DoDeleteAccount (Zeile 996) mit throw new NotImplementedException und auskommentierten Anweisungen |
|
||||
| StRS-085 | SyRS-066 | SwRS-066 | src/backend/Centron.BL/WebServices/Sales/Support/HelpdeskTimerWebServiceBL.cs, Rechteprüfung mit throw new ResultException (Zeilen 360 bis 378) |
|
||||
| StRS-085 | SyRS-087 | SwRS-088 | src/backend/Centron.BL/Administration/Employees/ mit den zehn Klassen und src/backend/Centron.BL/EmployeeArea/ |
|
||||
| StRS-085 | SyRS-111 | SwRS-111 | src/backend/Centron.BL/Mobile/MobileBL.cs und src/backend/Centron.DAO/Mobile/ |
|
||||
| StRS-086 | SyRS-087 | SwRS-088 | src/backend/Centron.BL/Administration/Employees/ mit den zehn Klassen und src/backend/Centron.BL/EmployeeArea/ |
|
||||
| StRS-086 | SyRS-088 | SwRS-089 | src/backend/Centron.Interfaces/Administration/Settings/ mit ApplicationSettingID.cs, ApplicationSettingDefinitions.cs, ApplicationSettingDefaults.cs und AppSettingsDataConst.cs |
|
||||
| StRS-087 | SyRS-089 | SwRS-090 | src/backend/Centron.BL/MassUpdate/MassUpdateBL.cs, Methoden SearchForReceiptUpdateItems, StartReceiptPriceUpdate und StartArticlePriceUpdate |
|
||||
| StRS-088 | SyRS-090 | SwRS-091 | src/backend/Centron.BL/Administration/FileManagement/ mit DirectoryReferenceBL.cs, GetDirectoryByReferenzBL.cs, SystemDirectoryNames.cs und CreateIndexNameBlacklist.cs |
|
||||
| StRS-088 | SyRS-096 | SwRS-097 | src/backend/Centron.BL/Administration/FileManagement/SharedDocumentBL.cs und src/nexus/CentronNexus/Shared/Authorization/DocumentAuthorization.cs |
|
||||
| StRS-089 | SyRS-091 | SwRS-092 | src/backend/Centron.BL/IndexSearch/GermanAnalyzer.cs, DefaultObjectPool<StringBuilder> und CultureInfo de-DE mit den Herkunftsverweisen im Kommentar |
|
||||
| StRS-090 | SyRS-092 | SwRS-093 | src/backend/Centron.BL/ExternalToolsBL/ExternalToolBL.cs, Signatur ReplaceExternalToolVariables(string text, VariableData variableData) |
|
||||
| StRS-091 | SyRS-093 | SwRS-094 | src/nexus/CentronNexus/Shared/Authorization/CentronAuthorization.cs, Methode EmployeeRightsRecurse mit GetFields(BindingFlags.Public \| BindingFlags.Static) und Rekursion über GetNestedTypes |
|
||||
| StRS-091 | SyRS-093 | SwRS-142 | src/nexus/CentronNexus/Settings/ und Management/ mit den genannten Unterbereichen |
|
||||
| StRS-092 | SyRS-064 | SwRS-064 | src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs, Methode CheckTextFieldLengths mit den Truncate-Aufrufen und dem begleitenden Kommentar |
|
||||
| StRS-092 | SyRS-093 | SwRS-094 | src/nexus/CentronNexus/Shared/Authorization/CentronAuthorization.cs, Methode EmployeeRightsRecurse mit GetFields(BindingFlags.Public \| BindingFlags.Static) und Rekursion über GetNestedTypes |
|
||||
| StRS-092 | SyRS-093 | SwRS-142 | src/nexus/CentronNexus/Settings/ und Management/ mit den genannten Unterbereichen |
|
||||
| StRS-092 | SyRS-094 | SwRS-095 | src/nexus/CentronNexus/Shared/Authorization/PortAuthorization.cs, Bedingung if (config.Value.Port is null) { context.Succeed(requirement); return; } |
|
||||
| StRS-092 | SyRS-094 | SwRS-141 | src/backend/Centron.BL/Administration/Logins/UsersBL.cs, Verzweigung bei currentUser.IsWebAccountLogin mit Aufruf _webAccountBL.UpdatePassword(webAccount.I3D, newPassword, currentUser.User.I3D) |
|
||||
| StRS-092 | SyRS-095 | SwRS-096 | src/nexus/CentronNexus/WebCart/ mit Shop- und Portalseiten im selben Ordner |
|
||||
| StRS-093 | SyRS-095 | SwRS-096 | src/nexus/CentronNexus/WebCart/ mit Shop- und Portalseiten im selben Ordner |
|
||||
| StRS-094 | SyRS-096 | SwRS-097 | src/backend/Centron.BL/Administration/FileManagement/SharedDocumentBL.cs und src/nexus/CentronNexus/Shared/Authorization/DocumentAuthorization.cs |
|
||||
| StRS-094 | SyRS-113 | SwRS-113 | src/backend/Centron.BL/WebLinks/IWebLinkActionHandler.cs mit den beiden Umsetzungen |
|
||||
| StRS-095 | SyRS-097 | SwRS-098 | src/nexus/CentronNexus.OutlookAddIn/ mit den fachlichen Unterordnern und dem Ordner Manifest |
|
||||
| StRS-096 | SyRS-098 | SwRS-099 | src/webservice/Centron.Host/RealTimeServices/TapiClientHub.cs, Schnittstelle ITapiClient mit den sieben typisierten Ereignissen |
|
||||
| StRS-096 | SyRS-098 | SwRS-102 | src/webservice/Centron.Host/RealTimeServices/TapiClientHub.cs, Ableitung CentronHub<TapiClientHub, ITapiClient> |
|
||||
| StRS-097 | SyRS-099 | SwRS-100 | src/backend/Centron.BL/Sales/Calendar/ScheduleBL.cs, private Methoden AddScheduleToExchange, UpdateScheduleToExchange und DeleteScheduleToExchange mit unmittelbarer Verwendung von this._graphClient |
|
||||
| StRS-098 | SyRS-065 | SwRS-065 | src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs, Methode DeleteHelpdeskTimer mit Task.Run und using var newSession = new DAOSession() für die Kalenderbereinigung |
|
||||
| StRS-098 | SyRS-070 | SwRS-070 | src/backend/Centron.BL/TaskManager/ und src/backend/Centron.BL/ToDoArea/ToDoBL.cs |
|
||||
| StRS-098 | SyRS-100 | SwRS-101 | src/backend/Centron.BL/MyDay/ mit MyDayBL.cs, MyDayNotificationsBL.cs, ReportConnections.cs und ReportRecord.cs |
|
||||
| StRS-099 | SyRS-098 | SwRS-099 | src/webservice/Centron.Host/RealTimeServices/TapiClientHub.cs, Schnittstelle ITapiClient mit den sieben typisierten Ereignissen |
|
||||
| StRS-099 | SyRS-098 | SwRS-102 | src/webservice/Centron.Host/RealTimeServices/TapiClientHub.cs, Ableitung CentronHub<TapiClientHub, ITapiClient> |
|
||||
| StRS-099 | SyRS-101 | SwRS-102 | src/webservice/Centron.Host/RealTimeServices/TapiClientHub.cs, Ableitung CentronHub<TapiClientHub, ITapiClient> |
|
||||
| StRS-099 | SyRS-101 | SwRS-133 | src/backend/Centron.BL/SocialMedia/SocialMediaBL.cs, Methoden SocialMediaSubscribeToHelpdesk und SocialMediaSubscribeToCRMActivity |
|
||||
| StRS-100 | SyRS-102 | SwRS-103 | Centron.sln, Projekte Centron.Host, Centron.Host.Console und Centron.Host.WindowsService |
|
||||
| StRS-100 | SyRS-102 | SwRS-146 | version.json mit Verweis auf Nerdbank.GitVersioning und der Version 2.0.2611-alpha |
|
||||
| StRS-100 | SyRS-103 | SwRS-104 | src/webservice/Centron.Controllers/Configuration/GlobalExceptionFilter.cs, Aufruf DAOFactory.Instance.TryRecoverConnectionPool |
|
||||
| StRS-100 | SyRS-105 | SwRS-104 | src/webservice/Centron.Controllers/Configuration/GlobalExceptionFilter.cs, Aufruf DAOFactory.Instance.TryRecoverConnectionPool |
|
||||
| StRS-100 | SyRS-105 | SwRS-107 | src/webservice/Centron.Host/AspNetCore/HostedServices/ManagedBackgroundService.cs mit den genannten Vorgaben |
|
||||
| StRS-100 | SyRS-105 | SwRS-139 | src/backend/Centron.BL/Administration/SQLManagement/SQLManagementBL.cs mit ausschließlich lesenden Methoden |
|
||||
| StRS-100 | SyRS-106 | SwRS-108 | src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs und BasicAuthenticator.cs, LogManager.GetCurrentClassLogger() mit benannten Platzhaltern |
|
||||
| StRS-100 | SyRS-106 | SwRS-140 | src/backend/Centron.BL/Administration/NetworkDiagnostics/NetworkDiagnosticsBL.cs, PerformanceTests/PerformanceTestBL.cs und Profiling/ProfilerBL.cs |
|
||||
| StRS-100 | SyRS-107 | SwRS-109 | src/backend/Centron.BL/Telemetry/TelemetryBL.cs, Signaturen mit maxBucketStartUtc, occurredUtc und den Zählerobjekten |
|
||||
| StRS-100 | SyRS-108 | SwRS-110 | src/backend/Centron.Common/DeveloperSecurity.cs, Prüfung emailAddress.EndsWith(InternalEmailAddressDomain, StringComparison.InvariantCultureIgnoreCase) |
|
||||
| StRS-100 | SyRS-109 | SwRS-107 | src/webservice/Centron.Host/AspNetCore/HostedServices/ManagedBackgroundService.cs mit den genannten Vorgaben |
|
||||
| StRS-100 | SyRS-120 | SwRS-120 | Centron.sln, elf Testprojekte |
|
||||
| StRS-100 | SyRS-120 | SwRS-146 | version.json mit Verweis auf Nerdbank.GitVersioning und der Version 2.0.2611-alpha |
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
| M-001 | Adressstamm (Konten, Kunden, Lieferanten) | mittel | 4 | StRS-011, SyRS-015, SwRS-015, SwRS-016 |
|
||||
| M-002 | CRM / Kontakthistorie | mittel | 3 | StRS-012, SyRS-016, SwRS-017 |
|
||||
| M-003 | CRM-Projekte | mittel | 3 | StRS-013, SyRS-017, SwRS-018 |
|
||||
| M-004 | Kampagnen / Mailing | mittel | 3 | StRS-014, SyRS-018, SwRS-019 |
|
||||
| M-005 | Lieferanten-Verträge | mittel | 3 | StRS-015, SyRS-019, SwRS-020 |
|
||||
| M-006 | Stammblätter | mittel | 3 | StRS-016, SyRS-020, SwRS-021 |
|
||||
| M-007 | Produktlebenszyklus (PLM) | mittel | 3 | StRS-018, SyRS-022, SwRS-023 |
|
||||
| M-008 | Audit / Umfragen | mittel | 3 | StRS-019, SyRS-023, SwRS-024 |
|
||||
| M-009 | Belegwesen Verkauf | tief | 30 | StRS-001, StRS-021, StRS-022, StRS-023, StRS-024, StRS-026, StRS-027, StRS-028, StRS-029, StRS-030, SyRS-001, SyRS-002, SyRS-025, SyRS-026, SyRS-027, SyRS-028, SyRS-030, SyRS-032, SyRS-033, SyRS-034, SwRS-001, SwRS-002, SwRS-026, SwRS-027, SwRS-028, SwRS-029, SwRS-031, SwRS-033, SwRS-034, SwRS-035 |
|
||||
| M-010 | Belegkonditionen | flach | 1 | SwRS-150 |
|
||||
| M-011 | Vertragsverwaltung | mittel | 3 | StRS-031, SyRS-036, SwRS-036 |
|
||||
| M-012 | Vertragsabrechnung (Automated Billing) | mittel | 7 | StRS-032, StRS-033, SyRS-037, SyRS-038, SwRS-037, SwRS-038, SwRS-039 |
|
||||
| M-013 | Pauschalabrechnung (Flatrate Billing) | mittel | 3 | StRS-036, SyRS-041, SwRS-042 |
|
||||
| M-014 | Vereinfachte Ticketabrechnung (Timer Billing) | mittel | 3 | StRS-037, SyRS-042, SwRS-043 |
|
||||
| M-015 | Klick-Zählerverwaltung | mittel | 3 | StRS-035, SyRS-040, SwRS-041 |
|
||||
| M-016 | Provisionsauswertung und -schemas | mittel | 4 | StRS-038, StRS-039, SyRS-043, SwRS-044 |
|
||||
| M-017 | Vertragsauswertung | mittel | 3 | StRS-040, SyRS-044, SwRS-045 |
|
||||
| M-018 | Mahnwesen | tief | 9 | StRS-041, StRS-042, StRS-025, SyRS-045, SyRS-046, SyRS-029, SwRS-046, SwRS-047, SwRS-030 |
|
||||
| M-019 | OPOS (offene Posten) | flach | 1 | SyRS-046 |
|
||||
| M-020 | Zahlungseingang | mittel | 3 | StRS-044, SyRS-048, SwRS-049 |
|
||||
| M-021 | SEPA / Zahlungsverkehr | mittel | 4 | StRS-045, StRS-046, SyRS-049, SwRS-050 |
|
||||
| M-022 | Buchhaltungsexport / -import | mittel | 3 | StRS-047, SyRS-050, SwRS-051 |
|
||||
| M-023 | DATEV-Belegtransfer | flach | 1 | StRS-048 |
|
||||
| M-024 | Kalkulation pro Filiale | flach | 1 | SwRS-056 |
|
||||
| M-025 | Online-Banking (finAPI) | mittel | 3 | StRS-050, SyRS-052, SwRS-053 |
|
||||
| M-026 | Kassenbuch / Belegerfassung | mittel | 3 | StRS-051, SyRS-053, SwRS-054 |
|
||||
| M-027 | Einkauf / Bestellwesen | mittel | 3 | StRS-052, SyRS-054, SwRS-055 |
|
||||
| M-028 | Bestellvorschlagsliste | mittel | 3 | StRS-053, SyRS-055, SwRS-056 |
|
||||
| M-029 | EDI-Verwaltung | mittel | 4 | StRS-054, SyRS-056, SyRS-057, SwRS-057 |
|
||||
| M-030 | Wareneingang / WE-Kalkulation | mittel | 3 | StRS-055, SyRS-058, SwRS-058 |
|
||||
| M-031 | Artikelverwaltung | mittel | 5 | StRS-056, SyRS-059, SyRS-031, SwRS-059, SwRS-032 |
|
||||
| M-032 | Artikelimport | mittel | 3 | StRS-057, SyRS-060, SwRS-060 |
|
||||
| M-033 | Warengruppenverwaltung | flach | 1 | SyRS-059 |
|
||||
| M-034 | Artikeleinheiten | flach | 1 | SyRS-059 |
|
||||
| M-035 | Barcode- und Seriennummernverwaltung | mittel | 3 | StRS-058, SyRS-061, SwRS-061 |
|
||||
| M-036 | Lagerbestandsführung | mittel | 3 | StRS-059, SyRS-062, SwRS-062 |
|
||||
| M-037 | Inventur | flach | 2 | SyRS-116, SwRS-116 |
|
||||
| M-038 | Kommissionierung | flach | 2 | SyRS-117, SwRS-117 |
|
||||
| M-039 | Logistik / Versand | mittel | 3 | StRS-060, SyRS-063, SwRS-063 |
|
||||
| M-040 | Produktion | flach | 2 | SyRS-115, SwRS-115 |
|
||||
| M-041 | Kostenträger / Kostenstellen | flach | 2 | SyRS-127, SwRS-127 |
|
||||
| M-042 | Kontenrahmen | flach | 1 | SwRS-147 |
|
||||
| M-043 | Mehrwertsteuer | mittel | 3 | StRS-043, SyRS-047, SwRS-048 |
|
||||
| M-044 | Aufschläge Stundensätze | flach | 2 | SyRS-128, SwRS-128 |
|
||||
| M-045 | Projektpreis-Import | flach | 1 | SwRS-148 |
|
||||
| M-046 | Sonderpreis-Importe für Verträge | flach | 1 | SwRS-148 |
|
||||
| M-047 | Produkt-/Kundenmatrix | mittel | 3 | StRS-020, SyRS-024, SwRS-025 |
|
||||
| M-048 | TradePool | flach | 2 | SyRS-119, SwRS-119 |
|
||||
| M-049 | Gutschein-/Voucher-Verwaltung | flach | 2 | SyRS-118, SwRS-118 |
|
||||
| M-050 | Helpdesk / Ticketing | mittel | 3 | StRS-061, SyRS-064, SwRS-064 |
|
||||
| M-051 | Ticket-Zeiterfassung | mittel | 6 | StRS-062, StRS-063, SyRS-065, SyRS-066, SwRS-065, SwRS-066 |
|
||||
| M-052 | Checklisten | mittel | 3 | StRS-064, SyRS-067, SwRS-067 |
|
||||
| M-053 | Ticketprozess-Vorlagen (C-FLOW) | mittel | 3 | StRS-065, SyRS-068, SwRS-068 |
|
||||
| M-054 | Erwartete Events | mittel | 3 | StRS-066, SyRS-069, SwRS-069 |
|
||||
| M-055 | Taskmanagement | mittel | 3 | StRS-067, SyRS-070, SwRS-070 |
|
||||
| M-056 | Ticketprojekte / Projektverwaltung | mittel | 3 | StRS-068, SyRS-071, SwRS-071 |
|
||||
| M-057 | RMA / Werkstatt | mittel | 3 | StRS-069, SyRS-072, SwRS-072 |
|
||||
| M-058 | QM-Meldungen | mittel | 3 | StRS-070, SyRS-073, SwRS-073 |
|
||||
| M-059 | Eskalationen | mittel | 3 | StRS-071, SyRS-074, SwRS-074 |
|
||||
| M-060 | SelfCare-Formulare | mittel | 3 | StRS-072, SyRS-075, SwRS-075 |
|
||||
| M-061 | Externer Helpdesk | flach | 1 | SwRS-135 |
|
||||
| M-062 | Geräte / Assets am Konto | mittel | 3 | StRS-017, SyRS-021, SwRS-022 |
|
||||
| M-063 | Asset-/DocuBoard-Verwaltung | flach | 2 | SyRS-021, SwRS-022 |
|
||||
| M-064 | IT-Planner | flach | 1 | SwRS-134 |
|
||||
| M-065 | Kalender und Termine | flach | 2 | SyRS-099, SwRS-100 |
|
||||
| M-066 | Kalender-/Exchange-Synchronisation | mittel | 3 | StRS-097, SyRS-099, SwRS-100 |
|
||||
| M-067 | Mein Tag (MyDay) | mittel | 3 | StRS-098, SyRS-100, SwRS-101 |
|
||||
| M-068 | Mitarbeiterauslastung | flach | 1 | StRS-098 |
|
||||
| M-069 | Todo-Liste | flach | 2 | SyRS-070, SwRS-070 |
|
||||
| M-070 | Telefonie / TAPI | mittel | 3 | StRS-096, SyRS-098, SwRS-099 |
|
||||
| M-071 | Chat | mittel | 3 | StRS-099, SyRS-101, SwRS-102 |
|
||||
| M-072 | Benachrichtigungen | mittel | 3 | StRS-099, SyRS-101, SwRS-102 |
|
||||
| M-073 | Mailversand und Mailvorlagen | mittel | 4 | SyRS-121, SwRS-121, SyRS-108, SwRS-110 |
|
||||
| M-074 | Mail-Scanner | flach | 2 | SyRS-122, SwRS-122 |
|
||||
| M-075 | Outlook-Integration | mittel | 3 | StRS-095, SyRS-097, SwRS-098 |
|
||||
| M-076 | Textbausteine | flach | 2 | SyRS-125, SwRS-125 |
|
||||
| M-077 | Dashboard | flach | 2 | SyRS-130, SwRS-130 |
|
||||
| M-078 | KI-Assistent / AI-Chat | flach | 2 | SyRS-114, SwRS-114 |
|
||||
| M-079 | Social Media | flach | 1 | SwRS-133 |
|
||||
| M-080 | Video-Portal | flach | 1 | SwRS-132 |
|
||||
| M-081 | Tags | flach | 1 | SwRS-131 |
|
||||
| M-082 | Kurz-URLs und WebLinks | flach | 2 | SyRS-113, SwRS-113 |
|
||||
| M-083 | Statistik / Analytics | mittel | 3 | StRS-073, SyRS-076, SwRS-076 |
|
||||
| M-084 | Leistungsnachweise | mittel | 3 | StRS-074, SyRS-077, SwRS-077 |
|
||||
| M-085 | Management Info | flach | 1 | StRS-075 |
|
||||
| M-086 | MSP-Auswertung, -Collector, -Dashboard | mittel | 3 | StRS-076, SyRS-078, SwRS-078 |
|
||||
| M-087 | Report-Engine und Reportverwaltung | mittel | 3 | StRS-077, SyRS-079, SwRS-079 |
|
||||
| M-088 | Reportserver | flach | 1 | StRS-077 |
|
||||
| M-089 | Index-/Volltextsuche | mittel | 3 | StRS-089, SyRS-091, SwRS-092 |
|
||||
| M-090 | Telemetrie | flach | 2 | SyRS-107, SwRS-109 |
|
||||
| M-091 | Rechteverwaltung | tief | 10 | StRS-005, StRS-006, SyRS-007, SyRS-008, SyRS-009, SyRS-010, SwRS-006, SwRS-007, SwRS-008, SwRS-009 |
|
||||
| M-092 | Authentifizierung und Anmeldung | tief | 12 | StRS-078, StRS-080, StRS-081, SyRS-080, SyRS-081, SyRS-082, SyRS-083, SwRS-080, SwRS-082, SwRS-083, SwRS-084, SwRS-141 |
|
||||
| M-093 | Zwei-Faktor-Authentifizierung | mittel | 3 | StRS-079, SyRS-081, SwRS-081 |
|
||||
| M-094 | Zugriffstoken (API-Token) | mittel | 3 | StRS-082, SyRS-084, SwRS-085 |
|
||||
| M-095 | Lizenzverwaltung | mittel | 5 | StRS-004, SyRS-005, SyRS-006, SwRS-005, SwRS-124 |
|
||||
| M-096 | Mitarbeiterverwaltung / Personal | mittel | 3 | StRS-085, SyRS-087, SwRS-088 |
|
||||
| M-097 | Mandanten und Filialen | mittel | 3 | StRS-002, SyRS-003, SwRS-003 |
|
||||
| M-098 | Anwendungseinstellungen | mittel | 3 | StRS-086, SyRS-088, SwRS-089 |
|
||||
| M-099 | Zusatzfelder (Custom Properties) | mittel | 3 | StRS-009, SyRS-013, SwRS-013 |
|
||||
| M-100 | Passwort-Manager / Zugangsverwaltung | mittel | 3 | StRS-083, SyRS-085, SwRS-086 |
|
||||
| M-101 | DSGVO / Datenschutz | mittel | 3 | StRS-084, SyRS-086, SwRS-087 |
|
||||
| M-102 | PDF-Signierung | flach | 2 | SyRS-035, SwRS-035 |
|
||||
| M-103 | Dokumenten- und Dateiverwaltung | mittel | 3 | StRS-088, SyRS-090, SwRS-091 |
|
||||
| M-104 | Datenbank-Skript-Engine | mittel | 3 | StRS-010, SyRS-014, SwRS-014 |
|
||||
| M-105 | SQL-Manager | flach | 1 | SwRS-139 |
|
||||
| M-106 | Protokollierung und LogViewer | flach | 2 | SyRS-106, SwRS-108 |
|
||||
| M-107 | c-entron Inspektor | flach | 1 | SwRS-140 |
|
||||
| M-108 | Massenupdates (Data Updater) | mittel | 3 | StRS-087, SyRS-089, SwRS-090 |
|
||||
| M-109 | Änderungsverfolgung | mittel | 3 | StRS-007, SyRS-011, SwRS-010 |
|
||||
| M-110 | Länder und Bundesländer | flach | 2 | SyRS-126, SwRS-126 |
|
||||
| M-111 | Externe Tools | mittel | 3 | StRS-090, SyRS-092, SwRS-093 |
|
||||
| M-112 | Objekt-Externreferenzen | flach | 2 | SyRS-112, SwRS-112 |
|
||||
| M-113 | Legacy-REST-Webservice | flach | 2 | SyRS-104, SwRS-105 |
|
||||
| M-114 | Moderne REST-API v1 | mittel | 3 | SyRS-076, SyRS-104, SwRS-106 |
|
||||
| M-115 | Web-Service-Hosting | tief | 10 | StRS-100, StRS-008, SyRS-102, SyRS-103, SyRS-105, SyRS-109, SyRS-110, SwRS-103, SwRS-104, SwRS-107 |
|
||||
| M-116 | Verbindungsmanager | flach | 2 | SyRS-129, SwRS-129 |
|
||||
| M-117 | Echtzeitdienste (SignalR) | flach | 2 | SyRS-098, SwRS-102 |
|
||||
| M-118 | Nexus ServiceBoard | mittel | 3 | StRS-091, SyRS-093, SwRS-094 |
|
||||
| M-119 | Nexus WebCart / Kundenportal | mittel | 6 | StRS-092, StRS-093, SyRS-094, SyRS-095, SwRS-095, SwRS-096 |
|
||||
| M-120 | Nexus WebOffer | mittel | 3 | StRS-094, SyRS-096, SwRS-097 |
|
||||
| M-121 | Nexus Dokumentensignatur | mittel | 3 | StRS-094, SyRS-096, SwRS-097 |
|
||||
| M-122 | Nexus Verwaltung und Einstellungen | flach | 1 | SwRS-142 |
|
||||
| M-123 | Web-Konten (WebAccount) | flach | 2 | StRS-092, SwRS-141 |
|
||||
| M-124 | Externe Warenwirtschafts- und Bank-APIs | mittel | 4 | SyRS-123, SyRS-124, SwRS-123, SwRS-137 |
|
||||
| M-125 | Gateway / EDI-Konnektoren und E-Rechnung | mittel | 5 | StRS-049, SyRS-051, SwRS-052, SwRS-057, SwRS-138 |
|
||||
| M-126 | RMM-Anbindung (Riverbird) | mittel | 3 | StRS-034, SyRS-039, SwRS-040 |
|
||||
| M-127 | Persistenz / ORM | flach | 1 | SwRS-143 |
|
||||
| M-128 | Domänenmodell | flach | 1 | SwRS-144 |
|
||||
| M-129 | Basisbibliotheken | mittel | 3 | SwRS-145, SyRS-012, SwRS-011 |
|
||||
| M-130 | UI-Bausteine | flach | 2 | SwRS-149, SwRS-012 |
|
||||
| M-131 | Lokalisierung | mittel | 3 | StRS-003, SyRS-004, SwRS-004 |
|
||||
| M-132 | Build, Auslieferung und Betrieb | flach | 1 | SwRS-146 |
|
||||
| M-133 | Testsuite | flach | 2 | SyRS-120, SwRS-120 |
|
||||
| M-134 | Mobile-Schnittstelle | flach | 2 | SyRS-111, SwRS-111 |
|
||||
| M-135 | Telekom D!VE | flach | 1 | SwRS-136 |
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
| StRS-001 | Durchgängige Abwicklung vom Angebot bis zur Rechnung in einem System | ja | belegt |
|
||||
| StRS-004 | Funktionsumfang wird über Lizenzen freigeschaltet | ja | belegt |
|
||||
| StRS-005 | Rollenbasierte Zugriffssteuerung über Rechtegruppen | ja | belegt |
|
||||
| StRS-006 | Einschränkende Rechte begrenzen die Sicht auf eigene Vorgänge oder die eigene Filiale | ja | belegt |
|
||||
| StRS-008 | Betrieb wahlweise mit direktem Datenbankzugriff oder über den Web-Service | ja | belegt |
|
||||
| StRS-021 | Eindeutige, lückenlos vergebene Belegnummern je Nummernkreis | ja | belegt |
|
||||
| StRS-022 | Belegversionen bleiben vollständig erhalten | ja | belegt |
|
||||
| StRS-023 | Belege gegen gleichzeitige Änderung schützen | ja | belegt |
|
||||
| StRS-024 | Belegerstellung nur mit passendem Recht und passender Filiale | ja | belegt |
|
||||
| StRS-025 | Neue Belege bei erreichter Mahnstufe sperren | ja | belegt |
|
||||
| StRS-026 | Steuerliche Pflichtangaben des Kunden vor Belegerstellung prüfen | ja | belegt |
|
||||
| StRS-027 | Mindestpreisunterschreitung nur mit besonderem Recht | ja | belegt |
|
||||
| StRS-028 | Belegstatus und Pflichtangaben je Belegart konfigurierbar | ja | belegt |
|
||||
| StRS-029 | Aus Belegen unmittelbar Tickets erzeugen | ja | belegt |
|
||||
| StRS-030 | Belegdokumente erzeugen, archivieren und elektronisch signieren lassen | ja | belegt |
|
||||
| StRS-031 | Verträge als eigene Belegart mit Laufzeit und Abrechnungsintervall | ja | belegt |
|
||||
| StRS-032 | Turnusmäßige Rechnungsstellung aus Verträgen | ja | belegt |
|
||||
| StRS-033 | Kontingente im Vertrag führen und verbrauchsabhängig verrechnen | ja | belegt |
|
||||
| StRS-034 | Verbrauchsabhängige Vertragsabrechnung aus externen Nutzungsdaten | nein | [HYPOTHESE] |
|
||||
| StRS-035 | Klickabrechnung für Druck- und Kopiersysteme | nein | [HYPOTHESE] |
|
||||
| StRS-036 | Pauschalabrechnung unabhängig vom Einzelaufwand | ja | belegt |
|
||||
| StRS-037 | Rechnungen unmittelbar aus erfassten Ticketzeiten erzeugen | ja | belegt |
|
||||
| StRS-038 | Vertriebsprovisionen nach Schema berechnen | ja | belegt |
|
||||
| StRS-039 | Provisionen aus dem Vertrag auf Folgebelege übernehmen | ja | belegt |
|
||||
| StRS-041 | Dreistufiges Mahnwesen mit protokollierter Stufenerhöhung | ja | belegt |
|
||||
| StRS-042 | Offener Betrag berücksichtigt Zahlungen und Gutschriften | ja | belegt |
|
||||
| StRS-043 | Steuersätze je Land mit Erlös- und Aufwandskonten | ja | belegt |
|
||||
| StRS-044 | Zahlungseingänge erfassen und Rechnungen als bezahlt kennzeichnen | ja | belegt |
|
||||
| StRS-045 | SEPA-Lastschriften in mehreren Formatversionen erzeugen | ja | belegt |
|
||||
| StRS-046 | Rücknahme eines SEPA-Exports öffnet die Rechnung nachvollziehbar wieder | ja | belegt |
|
||||
| StRS-047 | Belegdaten an die Finanzbuchhaltung übergeben und Offene Posten zurücklesen | ja | belegt |
|
||||
| StRS-048 | Belege und Belegbilder an DATEV übertragen | nein | [HYPOTHESE] |
|
||||
| StRS-049 | Elektronische Rechnungen nach ZUGFeRD und XRechnung | ja | belegt |
|
||||
| StRS-051 | Barzahlungen und Kassenbuch führen | ja | belegt |
|
||||
| StRS-052 | Einkaufsbelegkette mit eigener Rechtestruktur | ja | belegt |
|
||||
| StRS-054 | Belegaustausch mit Distributoren über EDI | ja | belegt |
|
||||
| StRS-056 | Artikelstamm mit Preisen, Einheiten und Warengruppen | ja | belegt |
|
||||
| StRS-057 | Artikel- und Preisdaten von Distributoren importieren | ja | belegt |
|
||||
| StRS-063 | Ticketzeiten sind nach Belegzuweisung unveränderlich | ja | belegt |
|
||||
| StRS-065 | Wiederkehrende Serviceabläufe über Ticketprozessvorlagen steuern | ja | belegt |
|
||||
| StRS-076 | Managed-Service-Lizenzen sammeln und mit Verträgen abgleichen | ja | belegt |
|
||||
| StRS-077 | Reports definieren, drucken, exportieren und zeitgesteuert versenden | ja | belegt |
|
||||
| StRS-078 | Anmeldung über mehrere Verfahren mit systemweiter Vorgabe | ja | belegt |
|
||||
| StRS-079 | Zweiter Faktor bei der Anmeldung | ja | belegt |
|
||||
| StRS-080 | Benutzerkonten zeitlich befristen und deaktivieren | ja | belegt |
|
||||
| StRS-081 | Kennwortverwaltung mit Mindestlänge und Änderungsnachweis | ja | belegt |
|
||||
| StRS-082 | API-Zugriffstoken mit Ablauf, Sperre und Nutzungsprotokoll | ja | belegt |
|
||||
| StRS-083 | Kundenzugangsdaten verschlüsselt verwalten und Zugriffe protokollieren | ja | belegt |
|
||||
| StRS-084 | Auskunfts- und Löschanspruch nach DSGVO bedienen | ja | belegt |
|
||||
| StRS-092 | Kundenportal mit eigenem Zugang, eigenem Rechtemodell und eigenem Port | ja | belegt |
|
||||
| StRS-095 | Outlook-Integration für Belege, Tickets und Kontakte | ja | belegt |
|
||||
| StRS-097 | Termine mit Exchange abgleichen, gesteuert über Abteilungszugehörigkeit | ja | belegt |
|
||||
| SyRS-001 | Einheitliche Belegstruktur aus Kopf und Positionen | ja | belegt |
|
||||
| SyRS-002 | Belege in Folgebelege überführen und Belege kopieren | ja | belegt |
|
||||
| SyRS-003 | Filialbezug an Beleg, Mitarbeiter, Rechtegruppe und Lager | ja | belegt |
|
||||
| SyRS-005 | Lizenzprüfung bei jeder Anmeldung mit Anzahl-, Ablauf- und Versionsprüfung | ja | belegt |
|
||||
| SyRS-006 | Modul- und Einstellungsverfügbarkeit aus Lizenz und Recht ableiten | ja | belegt |
|
||||
| SyRS-007 | Rechteermittlung über eine zwischengespeicherte Rechteliste je Benutzer | ja | belegt |
|
||||
| SyRS-008 | Rechtebaum mit Elternrechten und Zwangsvergabe übergeordneter Rechte | ja | belegt |
|
||||
| SyRS-009 | Sichtbarkeitsstufe aus gewährendem und einschränkendem Recht ableiten | ja | belegt |
|
||||
| SyRS-010 | Rechteänderungen werden vollständig protokolliert | ja | belegt |
|
||||
| SyRS-013 | Zusatzfelder mit Datentyp und verschlüsseltem Werttyp | ja | belegt |
|
||||
| SyRS-017 | Projektzuordnung an Belegen über eine freie Projektnummer | ja | belegt |
|
||||
| SyRS-018 | Kampagnenphasen werden zeitgesteuert fortgeschrieben | ja | belegt |
|
||||
| SyRS-022 | Produktlebenszyklusdaten werden zeitgesteuert importiert | ja | belegt |
|
||||
| SyRS-024 | Produktmatrix als geteiltes Steuerelement in mehreren Oberflächen | ja | belegt |
|
||||
| SyRS-026 | Belegversionierung über strukturgleiche Versionstabellen | ja | [HYPOTHESE] |
|
||||
| SyRS-027 | Optimistische Nebenläufigkeitsprüfung über einen Belegschlüssel | ja | belegt |
|
||||
| SyRS-028 | Belegartspezifische Rechteprüfung über eine austauschbare Fachlogik | ja | belegt |
|
||||
| SyRS-029 | Mahnstufensperre je Belegart konfigurierbar | ja | belegt |
|
||||
| SyRS-031 | Preisfindung aus mehreren Preisquellen mit Mindestpreisschutz | ja | belegt |
|
||||
| SyRS-032 | Anwenderdefinierter Belegstatus getrennt vom Systemstatus | ja | belegt |
|
||||
| SyRS-033 | Ticketerzeugung aus Belegen mit Wiederverwendung bestehender Tickets | ja | belegt |
|
||||
| SyRS-034 | Belegdokument aus Report, Reportgruppe und Ausgabekonfiguration erzeugen | ja | belegt |
|
||||
| SyRS-035 | PDF-Signatur nur bei verfügbarem Zertifikat | ja | belegt |
|
||||
| SyRS-036 | Vertragsmerkmale für Laufzeit, Abrechnung, Kontingent und Verlängerung | ja | belegt |
|
||||
| SyRS-037 | Vertragsende und Vertragsabschluss werden zeitgesteuert überwacht | ja | belegt |
|
||||
| SyRS-038 | Kontingentabrechnung bei abweichenden Intervallen normalisieren | ja | belegt |
|
||||
| SyRS-039 | Abbruch der Rechnungserzeugung bei unvollständigen Nutzungsdaten | nein | [HYPOTHESE] |
|
||||
| SyRS-040 | Zählerstände als Grundlage der Klickabrechnung | ja | belegt |
|
||||
| SyRS-041 | Modulverfügbarkeit über kombinierte Rechte- und Lizenzausdrücke | ja | belegt |
|
||||
| SyRS-042 | Abrechnungseinstellungen der Ticketabrechnung als eigene Konfiguration | ja | belegt |
|
||||
| SyRS-043 | Provisionsschemas zeitgesteuert auf offene Belege anwenden | ja | belegt |
|
||||
| SyRS-045 | Mahnläufe je Kunde mit Vorschau und Reportprüfung | ja | belegt |
|
||||
| SyRS-046 | Offene-Posten-Sicht über Rechnungsbeträge, Zahlungen und Gutschriften | ja | belegt |
|
||||
| SyRS-047 | Steuersätze werden zeitgesteuert an Artikel und Warengruppen fortgeschrieben | ja | belegt |
|
||||
| SyRS-048 | Zahlungseingänge und -ausgänge getrennt führen | ja | belegt |
|
||||
| SyRS-050 | Buchhaltungsübergabe mit eigener Belegartzuordnung | ja | belegt |
|
||||
| SyRS-051 | Elektronische Rechnung als eigenständige Datei und als eingebettetes PDF | ja | belegt |
|
||||
| SyRS-053 | Kassenbuchungen mit eigenem Nummernkreis und Filialbindung | ja | belegt |
|
||||
| SyRS-054 | Lieferantenbelege mit eigenen Repositories und externer Belegnummer | ja | belegt |
|
||||
| SyRS-055 | Bestellvorschläge und Bestandsdaten zeitgesteuert aktualisieren | ja | belegt |
|
||||
| SyRS-058 | Einkaufspreis an der Belegposition nachträglich anpassbar | ja | belegt |
|
||||
| SyRS-060 | Artikelimport und Preisaktualisierung laufen als eigenständige Dienste | ja | belegt |
|
||||
| SyRS-064 | Ticket mit Bearbeiterzuordnung, Fingerabdruck und Sichtbarkeitsmerkmal | ja | belegt |
|
||||
| SyRS-066 | Zeitänderungen prüfen die Zuordnung über den Mitarbeiterartikel | ja | belegt |
|
||||
| SyRS-071 | Ticketprojekte mit eigener Sichtbarkeitssteuerung | ja | belegt |
|
||||
| SyRS-074 | Eskalationen laufen zeitgesteuert mit eigener Mailvorlage | ja | belegt |
|
||||
| SyRS-076 | Auswertungsendpunkte sind einzeln rechtegeschützt | ja | belegt |
|
||||
| SyRS-080 | Verbindungsticket als Sitzungsnachweis mit Ablauf und Auffrischung | ja | belegt |
|
||||
| SyRS-081 | Abgelaufene Verbindungstickets werden minütlich entfernt | ja | belegt |
|
||||
| SyRS-082 | Anmeldeversuche und Anmeldedaten werden protokolliert | ja | belegt |
|
||||
| SyRS-083 | Anmeldung über Schnittstellen mit Ticket oder Zugriffstoken | ja | belegt |
|
||||
| SyRS-084 | Zugriffstoken protokollieren jeden Aufruf mit Methode und IP-Adresse | ja | belegt |
|
||||
| SyRS-085 | Vertrauliche Werte werden symmetrisch mit ableitbarem Schlüssel verschlüsselt | ja | belegt |
|
||||
| SyRS-086 | DSGVO-Bereinigung nur mit Recht und freigeschaltetem Modulmerkmal | ja | belegt |
|
||||
| SyRS-093 | Web-Portal führt Rechte, Web-Rechte, Lizenzen und Anmeldeart als Ansprüche | ja | belegt |
|
||||
| SyRS-094 | Kundenportal ist von der Mitarbeiteroberfläche technisch getrennt | ja | belegt |
|
||||
| SyRS-095 | Kundenportal bündelt Belege, Verträge, Tickets, Dokumente und Formulare | ja | belegt |
|
||||
| SyRS-096 | Geteilte Dokumente werden über Token und eigene Autorisierung freigegeben | ja | belegt |
|
||||
| SyRS-098 | Echtzeitkanäle sind authentifiziert und teils über ein Geheimnis geschützt | ja | belegt |
|
||||
| SyRS-103 | Fehler in Schnittstellenaufrufen liefern keine internen Details | ja | belegt |
|
||||
| SyRS-107 | Nutzungsdaten werden verdichtet erhoben und zeitgesteuert übertragen | ja | belegt |
|
||||
| SyRS-108 | Schutz vor unbeabsichtigtem Mailversand an Kundenadressen | ja | belegt |
|
||||
| SyRS-117 | Kommissionierung mit Mengenrückmeldung an den Beleg | ja | belegt |
|
||||
| SyRS-121 | Mailversand mit Vorlagen, Variablenersetzung, Signatur und Nachverfolgung | ja | belegt |
|
||||
| SyRS-124 | Fremdsysteme melden sich mit eigener Anwendungsart, Lizenz und Ablaufregel an | ja | belegt |
|
||||
| SyRS-126 | Länderstammdaten mit Währungskurs und steuerlicher Vorbelegung | ja | belegt |
|
||||
| SyRS-127 | Kostenstelle und Kostenträger je Belegart als Pflichtangabe steuerbar | ja | belegt |
|
||||
| SyRS-129 | Verbindungsdaten liegen in einer Datei mit verschlüsseltem Kennwort | ja | belegt |
|
||||
| SwRS-001 | Abstrakte Belegbasisklasse mit Pflichtmethoden | ja | belegt |
|
||||
| SwRS-005 | Lizenzzugriff über eine Schnittstelle mit Einzelinstanz und Prüfattrappe | ja | belegt |
|
||||
| SwRS-006 | Rechteabfrage als parametrisierte SQL-Abfrage über zwei Zuordnungstabellen | ja | belegt |
|
||||
| SwRS-007 | Rechtestruktur mit Elternverweis, Kinderzähler und Veraltungskennzeichen | ja | belegt |
|
||||
| SwRS-008 | Sichtbarkeitsstufe als eigener Aufzählungstyp | ja | belegt |
|
||||
| SwRS-009 | Rechteprotokoll als eigene Entität mit Vorgangsart | ja | belegt |
|
||||
| SwRS-012 | Auflösung der Datenzugriffsschicht über einen Dienstbehälter | nein | [HYPOTHESE] |
|
||||
| SwRS-020 | Lieferantenverträge über die dreiteilige Zugriffskette | nein | [HYPOTHESE] |
|
||||
| SwRS-021 | Stammblatt als Kopf-Positions-Entität im Belegzweig | ja | belegt |
|
||||
| SwRS-025 | Produktmatrix als geteiltes Steuerelement mit eigener Fachlogik | ja | belegt |
|
||||
| SwRS-029 | Belegartabhängige Fachlogik über einen Verteiler mit Ausdrucksparameter | ja | belegt |
|
||||
| SwRS-030 | Mahnstufe des Kontos über eine gemeinsame Kontoinformation | ja | belegt |
|
||||
| SwRS-031 | Steuerliche Kundenangaben als eigene Felder am Kunden | ja | belegt |
|
||||
| SwRS-032 | Preisermittlung in eigenen Hilfsklassen der Belegverarbeitung | ja | belegt |
|
||||
| SwRS-034 | Ticketerzeugung aus Belegen über vorbereitete Informationsobjekte | ja | belegt |
|
||||
| SwRS-036 | Vertragsentität mit Schnittstellen für Kontingent, Status und Provision | ja | belegt |
|
||||
| SwRS-037 | Vertragsabrechnung als Teilklasse mit deutschsprachigen Zwischenobjekten | ja | belegt |
|
||||
| SwRS-038 | Abrechnungsparameter als eigenes Übergabeobjekt | ja | belegt |
|
||||
| SwRS-039 | Kontingentänderungen erzeugen einzelne Protokolleinträge je Merkmal | ja | belegt |
|
||||
| SwRS-041 | Verdichtete Stammblattobjekte für die Klickabrechnung | ja | belegt |
|
||||
| SwRS-042 | Modulregistrierung als Datensatz mit Rechte- und Lizenzausdruck | ja | belegt |
|
||||
| SwRS-043 | Belegerzeugung aus Zeiten mit eigenen Ergebnisobjekten | ja | belegt |
|
||||
| SwRS-044 | Provisionsdaten in Schema-, Positions- und Zielentitäten | ja | belegt |
|
||||
| SwRS-046 | Mahnlauf mit Reportparametern und je Kunde gebündelten Rechnungen | ja | belegt |
|
||||
| SwRS-047 | Rechnungsbeträge als getrennte Felder für Brutto, Zahlung und Gutschrift | ja | belegt |
|
||||
| SwRS-048 | Steuersatz mit Kontozuordnung und Nachfolgeverweis | ja | belegt |
|
||||
| SwRS-049 | Zahlungsentitäten mit eigenem Protokoll und Löschfilter | ja | belegt |
|
||||
| SwRS-051 | Buchhaltungsschnittstelle mit eigener Belegartabbildung | ja | belegt |
|
||||
| SwRS-052 | Elektronische Rechnung als eigene Erzeugungslogik mit XML-Aufbau im Code | ja | belegt |
|
||||
| SwRS-053 | Bankzugriff über gekapselte Klienten mit eigener Fehlerklasse | ja | belegt |
|
||||
| SwRS-054 | Kassenvorgänge als eigener Fachbereich | ja | belegt |
|
||||
| SwRS-055 | Lieferantenbelege mit eigenen Fachlogikordnern und Speicherrepositories | nein | [HYPOTHESE] |
|
||||
| SwRS-058 | Einkaufspreisänderung positionsweise und belegweit mit Speicherentscheidung | ja | belegt |
|
||||
| SwRS-066 | Zeitrechteprüfung in der Web-Service-Schicht statt in der Fachlogik | ja | belegt |
|
||||
| SwRS-081 | Zwei-Faktor-Prüfung über austauschbare Prüfverfahren | ja | belegt |
|
||||
| SwRS-082 | Benutzerkonto trägt Sperrzeitraum, Anmeldedaten und Anmeldeverfahren | ja | belegt |
|
||||
| SwRS-083 | Kennwortrichtlinie je Benutzer statt systemweit | ja | belegt |
|
||||
| SwRS-084 | Kennwortablage als ungesalzener SHA-1-Hash über eine Einbyte-Kodierung | ja | belegt |
|
||||
| SwRS-085 | Zugriffstoken mit Hashablage, Ablaufmerkmal und Weichlöschung | ja | belegt |
|
||||
| SwRS-086 | Symmetrische Verschlüsselung mit aus dem Schlüssel abgeleitetem Initialisierungsvektor | ja | belegt |
|
||||
| SwRS-087 | DSGVO-Löschung derzeit nur für Ansprechpartner umgesetzt | ja | belegt |
|
||||
| SwRS-094 | Portalrichtlinien werden aus Rechtekonstanten durch Reflexion erzeugt | ja | belegt |
|
||||
| SwRS-095 | Kundenportalport als eigene Konfigurationsklasse mit Vorrang bei fehlendem Wert | ja | belegt |
|
||||
| SwRS-110 | Entwicklerschutz als statische Klasse mit Buildabhängigkeit | ja | belegt |
|
||||
| SwRS-111 | Mobile Datensicht mit eigenem Datenzugriffsordner | ja | belegt |
|
||||
| SwRS-125 | Textbausteine mit eigener Ersetzungsklasse und eigenem Datenzugriff | ja | belegt |
|
||||
| SwRS-128 | Zuschlagssätze mit eigener Fachlogik und Belegzuordnung | ja | belegt |
|
||||
| SwRS-139 | Datenbankdiagnose als lesende Auswertungsklasse | ja | belegt |
|
||||
| SwRS-141 | Web-Konten mit eigener Verwaltung und eigener Kennwortänderung | ja | belegt |
|
||||
| SwRS-143 | Persistenzschicht mit Sitzung, generischem Zugriff und benannten Abfragen | ja | belegt |
|
||||
| SwRS-148 | Preisimporte für Projekte und Verträge als getrennte Module | ja | belegt |
|
||||
| SwRS-150 | Belegkonditionen mit Skontostufen und Gültigkeit je Belegart | ja | belegt |
|
||||
+1
File diff suppressed because one or more lines are too long
+208
@@ -0,0 +1,208 @@
|
||||
# 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-26T13:22:45.8887651+02:00
|
||||
- **Endzeit:** 2026-08-26T14:57:34.0567156+02:00
|
||||
- **Dauer gesamt:** 1:34:48 (`duration_ms` 1:34:46; API: 1:31:21)
|
||||
— **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:** 4.4.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` 67.483.129 Tokens (99.99 %), `claude-haiku-4-5-20251001` 6.968 Tokens (0.01 %)
|
||||
- **Kontrolle Modell:** bestanden – ausschließlich das angeforderte Modell plus Haiku als zulässiger interner Hilfsaufruf
|
||||
- **Effort:** `max` (per `--effort max` gesetzt)
|
||||
- **Laufverzeichnis-ID:** `v4.4.0-a8f5`
|
||||
- **Ablage:** `Iteration 3/claude-opus-5/solo/max/`
|
||||
- **Parallele Läufe:** **ja** – zeitgleich liefen:
|
||||
- `Iteration 3/claude-opus-5/solo/max/02_Lauf_2026-08-26_132237_v4.4.0-37c5`
|
||||
- `Iteration 3/claude-opus-5/solo/max/02_Lauf_2026-08-26_132237_v4.4.0-fcdf`
|
||||
- `Iteration 3/claude-sonnet-5/builtin/high/02_Lauf_2026-08-26_125032_v4.4.0-4048`
|
||||
- `Iteration 3/claude-sonnet-5/builtin/high/02_Lauf_2026-08-26_125032_v4.4.0-f8b4`
|
||||
- `Iteration 3/claude-sonnet-5/builtin/high/02_Lauf_2026-08-26_125032_v4.4.0-fb24`
|
||||
|
||||
Die Zeitangaben dieses Laufs sind daher **nicht** für Laufzeitvergleiche zu verwenden. Tokenverbrauch, Anforderungszahl, Belegkennzahlen und Denials bleiben unverzerrt.
|
||||
- **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 | 294 |
|
||||
| Output-Tokens | 503.451 (davon 51.019 Thinking-Tokens) |
|
||||
| Cache-Write-Tokens | 823.212 |
|
||||
| Cache-Read-Tokens | 66.156.172 |
|
||||
| Agent-Turns | 210 |
|
||||
|
||||
### Gesamtlauf inkl. Subagenten (`modelUsage`, abrechnungsrelevant)
|
||||
| Messgröße | `claude-opus-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|
|
||||
| Input-Tokens | 294 | 6.945 | 7.239 |
|
||||
| Output-Tokens | 503.451 | 23 | 503.474 |
|
||||
| Cache-Write-Tokens | 823.212 | 0 | 823.212 |
|
||||
| Cache-Read-Tokens | 66.156.172 | 0 | 66.156.172 |
|
||||
| **Tokens gesamt** | **67.483.129** | **6.968** | **67.490.097** |
|
||||
|
||||
**Tokens gesamt: 67.490.097** — 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 | 100 | 26,3 % |
|
||||
| SyRS | 130 | 34,2 % |
|
||||
| SwRS | 150 | 39,5 % |
|
||||
| **Gesamt** | **380** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 136 | 35,8 % |
|
||||
| Daten | 91 | 23,9 % |
|
||||
| Schnittstelle | 80 | 21,1 % |
|
||||
| Sicherheit | 49 | 12,9 % |
|
||||
| nicht-funktional | 24 | 6,3 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 740 |
|
||||
| davon `PRIMÄR` | 576 (77,8 %) |
|
||||
| davon `SEKUNDÄR` | 155 (20,9 %) |
|
||||
| davon `KONTEXT` | 9 (1,2 %) |
|
||||
| Belege je Anforderung (Median) | 2,0 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 363 (95,5 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 356 | 93,7 % |
|
||||
| workaround | 24 | 6,3 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 365 | 96,1 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 15 | 3,9 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 132 | 34,7 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 24 | 6,3 % |
|
||||
|
||||
### 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** (112 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 380 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 380 von 380 mit Tracelinks (100,0 %) |
|
||||
|
||||
## Ergebnis
|
||||
- **Status:** erfolgreich (`is_error` = false, `subtype` = `success`, `stop_reason` = `end_turn`, `terminal_reason` = `completed`)
|
||||
- **Session-ID:** `62ec9981-4359-4963-8ef4-0100eb996357`
|
||||
- **Permission-Denials:** 4 (3 × `Bash`, 1 × `PowerShell`) – **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:** 10 Dateien in `Ergebnisse\`:
|
||||
|
||||
| Datei | Größe |
|
||||
|---|---:|
|
||||
| `Analysebericht.md` | 75.345 B |
|
||||
| `Glossar.md` | 21.348 B |
|
||||
| `Hypothesen.md` | 21.334 B |
|
||||
| `StRS.md` | 206.813 B |
|
||||
| `SwRS.md` | 232.413 B |
|
||||
| `SyRS.md` | 232.002 B |
|
||||
| `Traceability.md` | 43.356 B |
|
||||
| `_coverage_tmp.txt` | 10.474 B |
|
||||
| `_risk_tmp.txt` | 15.673 B |
|
||||
| `_trace_tmp.json` | 149.015 B |
|
||||
|
||||
- **Root unverändert:** ja (zeilenendennormalisiert verglichen).
|
||||
- **Abschlusstext des Agenten:** siehe `RawResult.json` (`result`)
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Iteration 3 – Snapshot mit DB-Schema.** `SSMS_DB_SCHEMA.sql` (3.266.626 B, 76.793 Zeilen,
|
||||
1.558 Tabellen, 182 Views, 63 Prozeduren, 30 Funktionen, 134 Fremdschlüssel; SHA-256
|
||||
`ED7F2125…1FA8DB`) ist seit Commit `f349d189` Bestandteil des Untersuchungsgegenstands. Läufe der
|
||||
Iteration 2 hatten die Datei nicht – beide Iterationen sind **nicht poolbar**.
|
||||
|
||||
**2. Parallelbetrieb – Zeitangaben unbrauchbar, Verbrauchsgrößen gültig.** Wanduhrzeit,
|
||||
`duration_ms` und `duration_api_ms` sind verzerrt; Tokenverbrauch, Anforderungszahl,
|
||||
Belegkennzahlen und Denials nicht. Einziger gültiger Laufzeitmesspunkt aller drei Iterationen
|
||||
bleibt der serielle Lauf `084301_v4.2.0-d6f9` mit 45:04.
|
||||
|
||||
**3. CLI 2.1.246** statt der gegen 2.1.245 verifizierten Fassung.
|
||||
|
||||
**4. Der erste Lauf, der die Belegdichte durchbricht: Median 2,0 statt 1,0.** Über alle 44
|
||||
vorherigen Läufe der Versuchsreihe lag der Median konstant bei **einem** Beleg je Anforderung –
|
||||
der Befund, wegen dem Prompt-Version 02 überhaupt geschrieben wurde und den die Prompt-Änderung
|
||||
allein nicht auflösen konnte. Hier: 740 Belege auf 380 Anforderungen. Nicht die Anweisung hat das
|
||||
bewirkt, sondern der Denkaufwand.
|
||||
|
||||
**5. 112 risikorelevante Anforderungen, keine einzige ungedeckt.** Mehr als das Doppelte jedes
|
||||
`high`-Laufs (17–63). Die risikobasierte Priorisierung aus Schritt 0c ist vollständig erfüllt,
|
||||
Tracelinks bei 100 %, 95,5 % mit Primärbeleg.
|
||||
|
||||
**6. Der `max`-Effort zeigt sich nicht in mehr Thinking-Tokens.** 51.019 Thinking-Tokens liegen im
|
||||
Bereich der `high`-Läufe (33.051–55.760). Der Mehraufwand steckt in **210 Turns und 1:34:46
|
||||
Laufzeit** – mehr Arbeitsschritte, nicht längeres Grübeln je Schritt. Das relativiert die
|
||||
Vermutung aus Iteration 1, `max` sei primär an den Thinking-Token-Werten erkennbar; dort waren
|
||||
Modell und Effort gleichzeitig gewechselt worden.
|
||||
|
||||
**7. Modellkontrolle bestanden** (nur `claude-opus-5` + Haiku), `spawned` = 0 – die
|
||||
`solo`-Bedingung ist eingehalten.
|
||||
|
||||
**8. Drei Streudateien im Ergebnisordner – Folge der Denylist.** `_coverage_tmp.txt`,
|
||||
`_risk_tmp.txt` und `_trace_tmp.json` (149 K). Vier Denials, darunter ein `mv` und ein
|
||||
`Remove-Item` zum Aufräumen. Die Dateien bleiben bewusst liegen: Nachträgliches Löschen würde die
|
||||
Artefaktlage des Laufs verändern. Das Muster ist inzwischen bei 5 von 17 Läufen aufgetreten und
|
||||
gehört zur Werkzeugkonfiguration, nicht zum Modell.
|
||||
+1
File diff suppressed because one or more lines are too long
+7582
File diff suppressed because it is too large
Load Diff
+63
@@ -0,0 +1,63 @@
|
||||
## 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 | 100 | 26,3 % |
|
||||
| SyRS | 130 | 34,2 % |
|
||||
| SwRS | 150 | 39,5 % |
|
||||
| **Gesamt** | **380** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 136 | 35,8 % |
|
||||
| Daten | 91 | 23,9 % |
|
||||
| Schnittstelle | 80 | 21,1 % |
|
||||
| Sicherheit | 49 | 12,9 % |
|
||||
| nicht-funktional | 24 | 6,3 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 740 |
|
||||
| davon `PRIMÄR` | 576 (77,8 %) |
|
||||
| davon `SEKUNDÄR` | 155 (20,9 %) |
|
||||
| davon `KONTEXT` | 9 (1,2 %) |
|
||||
| Belege je Anforderung (Median) | 2,0 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 363 (95,5 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 356 | 93,7 % |
|
||||
| workaround | 24 | 6,3 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 365 | 96,1 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 15 | 3,9 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 132 | 34,7 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 24 | 6,3 % |
|
||||
|
||||
### 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** (112 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 380 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 380 von 380 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\max\02_Lauf_2026-08-26_132237_v4.4.0-a8f5\Ergebnisse\`.
|
||||
Verändere keine Dateien im Arbeitsverzeichnis (der analysierten Codebasis).
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T14:57:34.0567156+02:00
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T13:22:45.8887651+02:00
|
||||
+970
@@ -0,0 +1,970 @@
|
||||
# Analysebericht
|
||||
|
||||
**Gegenstand:** Reverse Requirements Engineering der c-entron ERP-Suite
|
||||
**Arbeitsverzeichnis:** `C:\DEV\MasterArbeit\QuellCode\CentronERP` (ausschließlich lesend verwendet)
|
||||
**Bezugsnorm:** ISO/IEC/IEEE 29148:2018 (StRS §9.3, SyRS §9.4, SRS §9.5), Qualitätsmerkmale nach ISO/IEC 25010
|
||||
**Verfahren:** rein statische Analyse; das System wurde nicht ausgeführt, es bestand kein Datenbank- und kein Laufzeitzugriff
|
||||
**Ergebnisdateien:** `StRS.md`, `SyRS.md`, `SwRS.md`, `Traceability.md`, `Hypothesen.md`, `Glossar.md`, `Analysebericht.md`
|
||||
|
||||
---
|
||||
|
||||
## 1 Zusammenfassung
|
||||
|
||||
| Kennzahl | Wert |
|
||||
|----------|------|
|
||||
| Anforderungen gesamt | **446** |
|
||||
| davon StRS / SyRS / SwRS | 150 / 155 / 141 |
|
||||
| Als `[HYPOTHESE]` gekennzeichnet | **36** (8,1 %) |
|
||||
| Module im Inventar (Schritt 0) | **176** |
|
||||
| davon `tief` / `mittel` / `flach` / `nicht analysiert` | 12 / 67 / 77 / 20 |
|
||||
| Belege gesamt | **1.255** |
|
||||
| davon `PRIMÄR` / `SEKUNDÄR` / `KONTEXT` | 1.067 (85,0 %) / 111 (8,8 %) / 77 (6,1 %) |
|
||||
| Belege je Anforderung (Minimum / Mittel / Maximum) | 1 / 2,81 / 4 |
|
||||
| Risikorelevante Anforderungen | **227** |
|
||||
| davon ohne `PRIMÄR`-Beleg | **0** |
|
||||
| Anforderungen mit Konsolidierungskandidat | **141** |
|
||||
| Tracelink-Ziele (eindeutig) | 368, davon nicht auflösbar: **0** |
|
||||
|
||||
### Vermessung der Codebasis
|
||||
|
||||
Die folgenden Zahlen wurden im Lauf durch Zählung im Arbeitsverzeichnis ermittelt und tragen mehrere Anforderungen; sie sind hier zusammengefasst, weil sie den Umfang des Analysegegenstands bestimmen.
|
||||
|
||||
| Gegenstand | Anzahl | Ermittlung |
|
||||
|------------|--------|------------|
|
||||
| C#-Quelldateien (`*.cs`) | 14.707 | Dateizählung ohne `obj`/`bin` |
|
||||
| WPF-Oberflächendateien (`*.xaml`) | 1.233 | Dateizählung |
|
||||
| Blazor-Komponenten (`*.razor`) | 491 | Dateizählung |
|
||||
| Tabellen im Schemaabzug | 1.535 | `CREATE TABLE` im SQL-Dump |
|
||||
| Sichten | 153 | `CREATE VIEW` |
|
||||
| Gespeicherte Prozeduren | 59 | `CREATE PROCEDURE` |
|
||||
| Fremdschlüssel | 134 | `FOREIGN KEY` |
|
||||
| Prüfbedingungen (`CHECK`) | 288 | `CHECK CONSTRAINT` |
|
||||
| Tabellen mit Präfix `AssetManagement` | 221 | Namenszählung im Schemaabzug |
|
||||
| Operationen der Legacy-Schnittstelle | 2.618 | `WebInvoke`-Attribute |
|
||||
| davon ohne `[Authenticate]` | 171 | Attributauswertung je Operationsblock |
|
||||
| Controller der modernen REST-API | 41 | Dateizählung `*Controller.cs` |
|
||||
| Datenbank-Skriptmethoden | 764 | `IScriptMethod`-Umsetzungen |
|
||||
| Hintergrunddienste | 35 | `ManagedBackgroundService`-Ableitungen |
|
||||
| Dokumentationsdateien unter `docs/` | 44 | Dateizählung |
|
||||
|
||||
---
|
||||
|
||||
## 2 Vorgehen im Lauf
|
||||
|
||||
Die Bearbeitung folgte der im Auftrag vorgegebenen Reihenfolge.
|
||||
|
||||
**Schritt 0 – Modulinventar.** Vor der ersten Anforderung wurde das Inventar in Abschnitt 3 erstellt. Grundlage waren vier voneinander unabhängige Quellen: die Projektmappenstruktur unter `src/`, die Modulregistrierung `src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs` (rund 70 Registrierungen in 13 fachlichen Blöcken), die Ordnerstruktur von `src/backend/Centron.BL` und der Schemaabzug der Datenbank. Das Inventar wurde im Verlauf zweimal erweitert – um Bereiche, die erst über die Registrierung sichtbar wurden, und um schichtübergreifende Bausteine (M140 bis M156), die keinem Fachmodul zuzuordnen sind, aber eigene Anforderungen tragen. Es wurde zu keinem Zeitpunkt gekürzt.
|
||||
|
||||
**Schritt 0b – Mindestabdeckung.** Für 156 der 176 Inventarzeilen wurde mindestens eine belegte Anforderung gebildet, bevor einzelne Bereiche vertieft wurden. Für 20 Zeilen war das nicht möglich; sie sind in der Abdeckungstabelle als `nicht analysiert` mit Begründung geführt (Abschnitt 4). Eine Inventarzeile ohne Anforderung und ohne Begründung gibt es nicht.
|
||||
|
||||
**Schritt 0c – Vertiefung nach Risiko.** Vertieft wurden zuerst die Bereiche mit Sicherheitsregeln, Abrechnungslogik und Rechteprüfungen: Anmeldung und Rechtemodell (M003, M004), Belegberechtigung (M025), Nummernkreisvergabe (M007), Vertragsabrechnung (M039 bis M042), Mahnwesen und Zahlungsverkehr (M071 bis M073) sowie die beiden Schnittstellen (M113, M114). Die Vertiefung ging jeweils bis auf die durchsetzende Stelle – Datei, Klasse, Methode und die konkrete Bedingung.
|
||||
|
||||
**Schritte 2 bis 6.** Die Artefakterhebung stützte sich auf Quelltext, Schemaabzug, Ressourcendateien, Konfigurationsdateien, Bereitstellungsartefakte und die 44 Dokumentationsdateien unter `docs/`. Änderungshistorie, Tickets und Freigabemitteilungen standen als lesbare Dateien nicht zur Verfügung; sie wurden entsprechend nicht ausgewertet, und keine Aussage stützt sich auf sie. Die technische Analyse erfolgte über Struktur-, Aufruf- und Schemabetrachtung, die semantische Interpretation über die Trennung von `Fakt` und `Aussage`, die Formalisierung über das vorgegebene Blockformat und die Traceability-Anreicherung über Vorwärts- und Rückwärtsverweise zwischen den drei Ebenen.
|
||||
|
||||
**Belegdisziplin.** Jede Anforderung trägt mindestens einen Beleg mit Begründung. Wo eine Aussage nicht belegt werden konnte, wurde die Anforderung entweder nicht geschrieben oder – wo der fachliche Gegenstand nachweisbar existiert, die Ausprägung aber nicht – als `[HYPOTHESE]` mit offener Frage geführt. Quantitative Angaben (Anzahlen von Dateien, Tabellen, Operationen, Rechten) wurden vor der Aufnahme in eine Anforderung einzeln nachgezählt; mehrere zunächst geschätzte Werte wurden dadurch korrigiert (Abschnitt 5.5).
|
||||
|
||||
---
|
||||
|
||||
## 3 Schritt 0 – Modulinventar
|
||||
|
||||
Das Inventar ist die Bezugsgröße der Abdeckung. Es benennt fachliche Module und Komponenten, nicht Projektdateien: mehrere Inventarzeilen können auf dieselbe Projektdatei verweisen, wenn sie unterschiedliche fachliche Aufgaben erfüllt, und eine Inventarzeile kann mehrere Pfade zusammenfassen, wenn dieselbe fachliche Aufgabe über Schichten verteilt umgesetzt ist. Die Zeilen M140 bis M156 bezeichnen schichtübergreifende Bausteine, die Zeilen M157 bis M176 die nicht analysierten Bereiche.
|
||||
|
||||
| Nr. | Fachliches Modul / Komponente | Pfad im Arbeitsverzeichnis | Fachliche Aufgabe |
|
||||
|-----|-------------------------------|----------------------------|-------------------|
|
||||
| M001 | Mandantenverwaltung | `src/backend/Centron.Entities/Entities/Administration/Company, src/backend/Centron.BL/Administration/Mandatory, Modules/Administration/MandatorManagement` | Führt die rechtlichen Einheiten mit Firmen-, Steuer- und Bankstammdaten. |
|
||||
| M002 | Filialverwaltung | `src/backend/Centron.Entities/Entities/BranchArea, src/backend/Centron.BL/Administration/Company/BranchBL.cs` | Gliedert einen Mandanten in Standorte mit eigener Anschrift und Buchhaltungsnummer. |
|
||||
| M003 | Benutzer- und Anmeldeverwaltung | `src/backend/Centron.BL/Administration/Logins, Modules/Administration/Connections` | Authentifiziert Mitarbeiter, prüft Kontogültigkeit und gibt Anmeldetickets aus. |
|
||||
| M004 | Rechteverwaltung | `src/backend/Centron.BL/Administration/Rights, Modules/Administration/RightsManagement, Centron.Controllers/Authorization` | Verwaltet das hierarchische Rechtemodell und setzt es an drei Stellen durch. |
|
||||
| M005 | Zwei-Faktor-Authentifizierung | `src/backend/Centron.BL/Administration/Logins/TwoFactor, Centron.Controllers/Controllers/Unversioned/TwoFactorAuthController.cs` | Erbringt einen zweiten Anmeldenachweis über RADIUS oder E-Mail-Bestätigungslink. |
|
||||
| M006 | Microsoft-Anmeldung (OpenID Connect) | `src/backend/Centron.BL/Administration/Logins/Auth/OpenIdConnectAuthenticator.cs, Centron.Controllers/Controllers/Unversioned/JwtAuthController.cs` | Bindet Microsoft Entra ID als Anmeldeverfahren an. |
|
||||
| M007 | Nummernkreisverwaltung | `src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs, MandatoryBL.GetNumberGroup` | Vergibt fortlaufende Nummern je Nummernart, Mandant und Filiale. |
|
||||
| M008 | Lizenzverwaltung | `src/backend/Centron.BL/Administration/Licensing, Modules/Administration/WebServiceSettings/LicenseSettings` | Steuert den nutzbaren Funktionsumfang über Lizenz-Guids mit Anzahl und Fristen. |
|
||||
| M009 | Zugangstokenverwaltung | `src/backend/Centron.BL/Administration/AccessTokens, Centron.Controllers/Controllers/v1/Administration/AccessTokensController.cs` | Gibt benannte Token für Systemintegrationen aus und protokolliert ihre Verwendung. |
|
||||
| M010 | Webaccount-Verwaltung | `src/backend/Centron.BL/Administration/Logins/WebAccountBL.cs, WebRightsVisibility.cs` | Verwaltet Portalzugänge von Kundenkontakten mit eigenem Rechtekatalog. |
|
||||
| M011 | Änderungsprotokollierung | `src/backend/Centron.DAO/ChangeTracking, src/backend/Centron.Entities (Log-Entitäten)` | Protokolliert Änderungen überwachter Eigenschaften automatisch in der Persistenzschicht. |
|
||||
| M012 | DSGVO / Datenschutz | `src/backend/Centron.BL/Administration/DataSecurity, Modules/Administration/DSGVO` | Wertet löschbare Bestände aus und löscht personenbezogene Daten kaskadierend mit Protokoll. |
|
||||
| M013 | Passwort-Manager | `src/backend/Centron.BL/PasswordManager, PasswordManagementArea, Administration/CentronConfigDb` | Speichert Kundenzugangsdaten verschlüsselt mit Rechteschutz, Siegel und Zugriffsprotokoll. |
|
||||
| M014 | Kontenmodell und Adressen | `src/backend/Centron.BL/Accounts, Modules/Finances/AccountManagement, Modules/Finances/Crm` | Führt Geschäftspartner mit Rollen, Adressen und Ansprechpartnern. |
|
||||
| M015 | CRM-Aktivitäten | `src/backend/Centron.BL/CustomerArea/ContactActivityBL.cs` | Dokumentiert Kundenkontakte als datierte, auswertbare Aktivitäten. |
|
||||
| M016 | Kampagnen und Mailing | `src/backend/Centron.Entities/Entities/Accounts/Campaigns, Modules/Finances/Campaigns, Modules/Sales/Mailing` | Führt Marketingkampagnen mit Phasen, Aktionen und Teilnehmern. |
|
||||
| M017 | CRM-Projekte | `src/backend/Centron.BL/Sales/Customers/CrmProjects, Modules/Finances/Projects` | Bündelt Vertriebsvorgänge unter einer eigenen Projektnummer. |
|
||||
| M018 | Audits und Fragebögen | `src/backend/Centron.Entities/Entities/Accounts/Survey, Modules/Survey` | Erfasst strukturierte Kundenaudits mit Fragenkategorien und Freigabeprozess. |
|
||||
| M019 | Preisfindung und Sonderpreise | `src/backend/Centron.Entities/Entities/Accounts/SpecialPrices, ReceiptPriceHelperBL, ArticleVolumePricesBL` | Ermittelt den Positionspreis aus Preisliste, Sonderpreis, Staffel, Vertrag und Aktionspreis. |
|
||||
| M020 | Bankverbindungen und SEPA-Mandate | `src/backend/Centron.Entities/Entities/Administration/Documents/SepaContracts, Accounting/BankAccountBL.cs` | Führt Bankverbindungen und Einzugsermächtigungen je Geschäftspartner. |
|
||||
| M021 | Stammblätter (Gerätedokumentation) | `src/backend/Centron.Entities/Entities/Sales/Receipts/MasterDataLists, Modules/Finances/MasterDataLists` | Dokumentiert beim Kunden installierte Geräte mit Seriennummer, Rechnungs- und Vertragsbezug. |
|
||||
| M022 | Kundengeräteverwaltung | `src/backend/Centron.BL/Devices, src/backend/Centron.Entities/Entities/Devices` | Führt Kundengeräte mit Zugriffsadressen, Ticketbezug und Protokoll. |
|
||||
| M023 | Belegkern | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Centron.Entities/Entities/Sales/Receipts` | Bildet alle Belegarten einheitlich ab und steuert Erzeugung, Weiterführung und Speicherung. |
|
||||
| M024 | Belegzustände und Stornierung | `src/backend/Centron.Interfaces/Sales/Receipts/ReceiptState.cs, ReceiptBL` | Führt die drei Belegzustände und sperrt stornierte Belege gegen Folgeaktionen. |
|
||||
| M025 | Belegberechtigung | `src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs (CanUserEditReceipt, CanUserViewReceipt)` | Bindet Bearbeitung und Ansicht von Belegen an belegartspezifische Rechte und die Filiale. |
|
||||
| M026 | Belegversionierung | `Versionstabellen je Belegart, AssetHeadDAO.SaveAssetVersion` | Legt vor jeder Belegänderung eine vollständige Kopie des Vorzustands ab. |
|
||||
| M027 | Nebenläufigkeitsschutz | `ReceiptBase.ConcurrencyControlGuid, AssetLock, AssetLockBL` | Erkennt konkurrierende Änderungen und lehnt die zweite Änderung ab. |
|
||||
| M028 | Zahlungs- und Belegkonditionen | `Tabelle Zahkond, Modules/Administration/ReceiptConditions` | Führt Skontostaffeln, Fälligkeitsregeln und belegartbezogene Gültigkeit. |
|
||||
| M029 | Mehrwertsteuerverwaltung | `src/backend/Centron.BL/Warehousing/TaxBL.cs, Modules/Stammdaten/ValueAddedTax` | Führt Steuersätze als datierte Kette und ermittelt den zum Belegdatum gültigen Satz. |
|
||||
| M030 | Währungen und Fremdwährungsbelege | `ReceiptBase (CurrencyI3D, CurrencyFactor), CountryBL` | Führt Belege in Fremdwährung mit Umrechnungsfaktor. |
|
||||
| M031 | Belegvorlagen | `src/backend/Centron.BL/Sales/Receipts/ReceiptTemplateBL.cs, Entities/Sales/Receipts/Templates` | Verwaltet Belegmuster mit eigener Nummernvergabe und Ordnerstruktur. |
|
||||
| M032 | Provisionsabrechnung | `src/backend/Centron.BL/Sales/Receipts/ReceiptProvision*BL.cs, Modules/Finances/Receipts/Provision` | Ermittelt Provisionen aus Schema, Staffel, Kundenzuordnung und Mitarbeiterstufe. |
|
||||
| M033 | Anzahlungsrechnungen | `src/backend/Centron.BL/Sales/Receipts/DownPayment` | Erzeugt Anzahlungsrechnungen und verrechnet sie in der Schlussrechnung. |
|
||||
| M034 | Belegausgabe und Reportanbindung | `ReceiptBL (Berichtserzeugung), ReceiptLayoutItemKindPdfHelperBL` | Erzeugt aus einem Beleg ein PDF nach konfigurierbaren Layoutelementen. |
|
||||
| M035 | E-Rechnung (ZUGFeRD/XRechnung) | `src/backend/Centron.BL/DataExchange/EDI/SaleInvoices, EDI/Zugferd` | Erzeugt und liest strukturierte elektronische Rechnungen in sechs Formatständen. |
|
||||
| M036 | Freigabewesen Warenkorb | `src/backend/Centron.BL/Sales/Receipts/ReceiptCartReleaseSystemBL.cs` | Führt Kundenwarenkörbe durch ein zweistufiges Genehmigungsverfahren. |
|
||||
| M037 | Projekt- und Sonderpreisimport | `Modules/ProjectPriceImport, Modules/Sales/SpecialArticleImport, ContractExternalArticleImport*BL` | Liest Projekt- und Sonderpreise aus Lieferantendateien und übernimmt sie in Verträge. |
|
||||
| M038 | Vertragsverwaltung | `src/backend/Centron.BL/Sales/CustomerAssets/Contracts, Entities/Sales/Receipts/ContractLists` | Führt Wartungs- und Serviceverträge mit Laufzeit, Kündigung und Abrechnungssteuerung. |
|
||||
| M039 | Vertragsabrechnung | `src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura, Modules/Finances/AutomatedBilling` | Erzeugt aus fälligen Verträgen Rechnungen und protokolliert das Ergebnis je Vertrag. |
|
||||
| M040 | Kontingentverwaltung | `ReceiptContract (Contingent-Felder), AutomaticFacturaBL.GetGroupToContingents` | Führt Stunden- und Wertkontingente mit Verbrauch, Grenzwert und Ausgleichsartikel. |
|
||||
| M041 | Zähler- und Klickabrechnung | `Entities/Sales/CustomerAssets/Contracts/ClickContracts, Modules/Finances/DeviceClickCounter` | Erfasst und importiert Gerätezählerstände und rechnet sie mit Freimengen und Staffeln ab. |
|
||||
| M042 | RMM-Mengenabrechnung | `src/backend/Centron.BL/RiverDivo, AutomaticFacturaWebServiceBL.CheckRMMArticle` | Bildet nutzungsabhängige Vertragspositionen aus Mengen eines externen RMM-Systems. |
|
||||
| M043 | Vereinfachte Ticketabrechnung | `src/backend/Centron.BL/Sales/CustomerAssets/TimerBilling, Modules/Finances/TimerBilling` | Erzeugt aus ausgewählten Ticketzeiten unmittelbar einen Beleg. |
|
||||
| M044 | Pauschalabrechnung | `Modules/Finances/FlatrateBilling` | Rechnet Projekte pauschal unabhängig von den erfassten Einzelleistungen ab. |
|
||||
| M045 | MSP-Auswertung und Collector | `src/backend/Centron.Entities/Entities/Statistics/MspCollectors, Modules/Statistics/Msp*` | Wertet lizenzierte Managed-Service-Bestände aus und überführt Abweichungen in Verträge. |
|
||||
| M046 | Artikelverwaltung | `src/backend/Centron.BL/Warehousing/ArticleBL.cs und ArticleManagement` | Führt Artikel mit Einheiten, Staffelpreisen, Codes und gesetzlichen Nachweisangaben. |
|
||||
| M047 | Warengruppenverwaltung | `src/backend/Centron.BL/Warehousing/InventoryManagement/MaterialGroupBL.cs` | Ordnet Artikel Warengruppen zu und trägt steuerliche Vorgaben. |
|
||||
| M048 | Bestandsführung | `src/backend/Centron.BL/Warehousing/SecondStockArticleBL.cs, StockManagement` | Bucht Bestände je Lager, Lagerbereich und Lagerplatz mit Wertfortschreibung. |
|
||||
| M049 | Inventur | `src/backend/Centron.BL/Storage/StorageBL.cs, Modules/Warehousing/Inventory` | Führt transaktionsgesicherte Bestandsaufnahmen mit Fortschrittsmeldung. |
|
||||
| M050 | Kommissionierung | `src/backend/Centron.BL/Warehousing/CommissioningManagement, Modules/Warehousing/Commissioning` | Stellt Auftragspositionen zusammen und ordnet Einheiten über Barcodes zu. |
|
||||
| M051 | Lieferantenbelege | `src/backend/Centron.BL/Sales/Receipts/Supplier*, Modules/Purchasing/PurchaseSettings` | Bildet Anfrage, Bestellung, Wareneingang, Kalkulation und Lieferantengutschrift ab. |
|
||||
| M052 | Bestellvorschlagsliste | `Modules/Purchasing/OrderSuggestionList` | Ermittelt Bestellvorschläge aus Bestand, Bedarf und Mindestbestand. |
|
||||
| M053 | EDI mit Distributoren | `src/backend/Centron.BL/EDI, src/backend/Centron.Gateway/EDI_*, Modules/Purchasing/EDIManagement` | Tauscht Bestell-, Liefer- und Rechnungsdokumente in distributorspezifischen Formaten aus. |
|
||||
| M054 | Preisquellen und Preisspiegel | `src/apis/Centron.APIs.*, Warehousing/ActionPriceBL.cs, Warehousing/External` | Stellt Einkaufspreise aus sieben Quellen je Artikel gegenüber. |
|
||||
| M055 | Versandanbindung | `src/apis/Centron.Api.Gls, src/apis/Centron.Api.Shipcloud, Modules/Logistic/ShippingMethodSettings` | Übergibt Versandaufträge an Paketdienstleister und verwaltet Paketvorlagen. |
|
||||
| M056 | Artikelimport | `src/backend/Centron.BL/Warehousing/ArticleManagement/ArticleImportBL.cs, Modules/Warehousing/ArticleImport` | Liest Artikel- und Preisdaten zeitgesteuert ein und ordnet sie dem Bestand zu. |
|
||||
| M057 | Ticketverwaltung | `src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs, Modules/Helpdesk/TicketList` | Führt Serviceanfragen als Tickets mit Zuständigkeit, Klassifikation und Fälligkeit. |
|
||||
| M058 | Ticketsichtbarkeit | `HelpdeskBL.GetShowHelpdeskRight, CentronNexus/Shared/Auth/TicketFilterService.cs` | Begrenzt die Ticketsicht nach Rechten, Filiale, Verkaufsgebiet und Kundenbezug. |
|
||||
| M059 | Ticketzeiterfassung | `src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs` | Erfasst Arbeitszeiten mit Zeitart, Abrechenbarkeit, Zuschlägen und Kalenderbezug. |
|
||||
| M060 | Zeitenschutz und Zeitrechte | `HelpdeskTimerWebServiceBL.ThrowIfUserDoesntHaveRightToChangeHelpdeskTimers` | Bindet Änderung und Löschung erfasster Zeiten an abgestufte Rechte und schützt abgerechnete Zeiten. |
|
||||
| M061 | Fälligkeits- und Prioritätenverwaltung | `HelpdeskBL.GetDueDateFromPriority, HelpdeskPrioritiesBL, Modules/Helpdesk/Settings/Priorities` | Berechnet die Ticketfälligkeit aus Priorität, Geschäftszeiten und Wochenendregel. |
|
||||
| M062 | Eskalationsverwaltung | `src/backend/Centron.BL/Sales/Support/Escalation, Modules/Administration/EscalationsSettings` | Meldet überfällige Vorgänge in drei Stufen an vier Empfängergruppen. |
|
||||
| M063 | Checklisten | `src/backend/Centron.BL/CheckListArea, Modules/Helpdesk/CentronChecklist` | Bindet Aufgabenlisten an Vorgänge und steuert darüber den Vorgangsabschluss. |
|
||||
| M064 | Ticketvorlagen und Ticketprozesse | `Entities/CustomerArea/Support/TicketProcess, Modules/Helpdesk/TicketProcessTemplates` | Erzeugt Tickets samt Untervorgängen und Checklisten aus Vorlagen. |
|
||||
| M065 | Serviceprojekte und Taskmanagement | `src/backend/Centron.BL/TicketProjects, TaskManager, Modules/Helpdesk/TaskManagement` | Führt Serviceprojekte mit Abhängigkeiten und untergeordneten Aufgaben. |
|
||||
| M066 | RMA und Werkstatt | `src/backend/Centron.BL/CustomerArea/RmaBL.cs, Modules/Rma` | Wickelt Reklamationen mit Ein- und Rückversand sowie Artikelhistorie ab. |
|
||||
| M067 | SelfCare-Formulare | `src/backend/Centron.BL/SelfCare, Modules/Helpdesk/SendSelfCareForm` | Stellt Kunden Formulare per Zugriffsschlüssel zu und nimmt die Antwort entgegen. |
|
||||
| M068 | Mailintegration und MailScanner | `src/backend/Centron.BL/MailScanner, Mail, Sales/Support/Helpdesk*Mail*` | Ordnet eingehende E-Mails regelbasiert Tickets zu und dokumentiert den Mailverkehr. |
|
||||
| M069 | Erwartete Ereignisse | `src/backend/Centron.BL/ExpectedEvents, Modules/Helpdesk/ExpectedEvents` | Überwacht wiederkehrende Kundenmeldungen und weist ausbleibende Ereignisse aus. |
|
||||
| M070 | KI-Unterstützung | `src/backend/Centron.BL/ArtificialIntelligence, Modules/ArtificialIntelligence` | Bietet KI-gestützte Zusammenfassung, Textbewertung, Angebotspositionen und Dialog. |
|
||||
| M071 | Mahnwesen | `src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning, Modules/Finances/Dunning` | Mahnt offene Rechnungen in drei Stufen mit Vorschau und Rücknahme. |
|
||||
| M072 | Offene Posten und Zahlungseingang | `src/backend/Centron.BL/Sales/Receipts/Invoices/Opos, Finances/IncomingPayments` | Wertet offene Posten aus und erfasst Zahlungseingänge unter einer Laufnummer. |
|
||||
| M073 | SEPA-Zahlungsverkehr | `src/backend/Centron.BL/DataExchange/PaymentTransactions, Centron.Gateway/.../Sepa` | Erzeugt Zahlungsdateien nach amtlichem Schema und kennzeichnet exportierte Rechnungen. |
|
||||
| M074 | Buchhaltungsexport und -import | `src/backend/Centron.BL/DataExchange/BookKeeping, Modules/DataExchange/BookKeeping` | Stellt Belegdaten für die Finanzbuchhaltung bereit und liest offene Posten zurück. |
|
||||
| M075 | DATEV-Belegtransfer | `Modules/DataExchange/DatevOnline2020` | Übergibt Belegbilder und Buchungsdaten an DATEV Unternehmen online. |
|
||||
| M076 | Kontenrahmen | `src/backend/Centron.BL/Administration/BookKeepingAccountSystems, Modules/Warehousing/AccountSystems` | Führt Kontenrahmen und bildet Buchhaltungsnummern regelbasiert. |
|
||||
| M077 | Kostenstellen und Kostenträger | `src/backend/Centron.BL/Warehousing/CostCenterBL.cs, CostObjectBL.cs, Modules/PayersAndCostCenter` | Ordnet Kosten und Erlöse verursachungsgerecht zu. |
|
||||
| M078 | Online-Banking | `src/apis/Centron.APIs.FinAPI, Centron.Gateway/OnlineBanking, Modules/OnlineBanking` | Ruft Kontoumsätze über einen externen Kontoinformationsdienst ab. |
|
||||
| M079 | Produktionsaufträge | `src/backend/Centron.BL/Production, Modules/Production/ProductionOrder` | Führt Produktionsaufträge mit Positionen und Protokoll. |
|
||||
| M080 | Maschinenverwaltung | `Modules/Production/MachineManagement` | Führt Produktionsmaschinen als Stammdaten für Fertigungsaufträge. |
|
||||
| M081 | Auslastung und Leistungsnachweise | `HelpdeskTimerBL.GetEmployeeTimeStatistics, Modules/Statistics/EmployeeAnalytics` | Wertet erfasste Zeiten je Mitarbeiter, Kunde und Zeitraum aus. |
|
||||
| M082 | Tagesplanung "Mein Tag" | `src/backend/Centron.BL/MyDay, Modules/MyCentron/MyDay` | Führt je Mitarbeiter eine Tagesplanung und übernimmt erfasste Ticketzeiten. |
|
||||
| M083 | Kalender und Exchange-Abgleich | `src/backend/Centron.BL/Calendar, Sales/Calendar, Modules/Calendar` | Führt Termine und gleicht sie über Microsoft Graph mit Exchange ab. |
|
||||
| M084 | Telefonie und Anrufprotokoll | `src/backend/Centron.BL/Tapi, Modules/MyCentron/Telephony` | Protokolliert Anrufe und ermittelt den Anrufer über die Rufnummer. |
|
||||
| M085 | Berichtswesen und ReportEngine | `src/backend/Centron.BL/ReportEngine, Modules/Reports/ReportManagement` | Verwaltet Berichtsvorlagen zentral und erzeugt Ausgaben über Gruppen und Parameter. |
|
||||
| M086 | Reportserver | `Modules/Administration/ReportServer` | Erzeugt Berichte zeitgesteuert und verteilt sie an festgelegte Empfänger. |
|
||||
| M087 | Dokumentenablage | `src/backend/Centron.BL/Administration/FileManagement, Administration/Documents` | Legt Dokumente in einer je Geschäftsobjekt erzeugten Verzeichnisstruktur ab. |
|
||||
| M088 | Volltextsuche | `src/backend/Centron.BL/IndexSearch` | Macht Tickets, Konten und Dokumente über einen Volltextindex durchsuchbar. |
|
||||
| M089 | Massendatenpflege (Data Updater) | `src/backend/Centron.BL/MassUpdate, Modules/Massenupdates` | Ändert Preise und Daten in großer Zahl auf Grundlage gespeicherter Vorlagen. |
|
||||
| M090 | Kundenindividuelle Zusatzfelder | `Entities/Customizations (ModuleCustomProperty), Modules/Global/CustomProperties` | Stellt je Modul frei definierbare, typisierte Zusatzfelder bereit. |
|
||||
| M091 | Lokalisierung | `Resources/LocalizedStrings.resx in drei Projekten` | Hält alle sichtbaren Texte in Ressourcendateien für Deutsch und Englisch. |
|
||||
| M092 | Benachrichtigungen | `src/backend/Centron.BL/NexusNotifications, Notifications, MyDay/MyDayNotificationsBL.cs` | Erzeugt typisierte Benachrichtigungen und verteilt sie in Echtzeit. |
|
||||
| M093 | Externe Werkzeuge | `src/backend/Centron.BL/ExternalToolsBL, Modules/ExternalTool` | Startet externe Programme mit Parametern aus dem aktuellen Vorgang. |
|
||||
| M094 | Datenbank-Skriptsystem | `src/backend/Centron.BL/Administration/Scripts` | Bringt das Datenbankschema beim Start auf den zur Anwendungsversion passenden Stand. |
|
||||
| M095 | SQL-Manager und Inspektor | `src/backend/Centron.BL/Administration/SQLManagement, Modules/Administration/SqlManagers` | Bietet Administratoren einen direkten Abfragezugang zur Datenbank. |
|
||||
| M096 | Hintergrunddienste | `src/webservice/Centron.Host/AspNetCore/HostedServices, Administration/BackgroundServices` | Führt 35 wiederkehrende Aufgaben zeitgesteuert mit Aktivierung und Fehlerdrosselung aus. |
|
||||
| M097 | Telemetrie | `src/backend/Centron.BL/Telemetry, Interception/Interceptors/*Telemetry*` | Erfasst Nutzung von Schnittstelle und KI-Funktionen aggregiert und überträgt sie. |
|
||||
| M098 | Windows-Client-Rahmen | `src/centron/Centron.WPF.UI, Centron.WPF.UI.Extension` | Bietet die vollständige Fachoberfläche mit Modulregistrierung und MVVM-Rahmen. |
|
||||
| M099 | Installation und Auslieferung | `deployment/, .github/actions/sign-artifacts` | Erzeugt signierte Installationspakete für Client und Webservice. |
|
||||
| M100 | Webservice-Betrieb | `src/webservice/Centron.Host*, docker/` | Betreibt den Webservice als Windows-Dienst, Konsolenanwendung oder Container. |
|
||||
| M101 | Verbindungs- und Umgebungsverwaltung | `src/webservice/c-entron.misc.ConnectionManager, Administration/Environments` | Verwaltet benannte Verbindungen und prüft Datenbank- und Anmeldeerreichbarkeit. |
|
||||
| M102 | Protokollierung im Betrieb | `nlog.config je Wirtsprozess, Modules/Administration/LogViewer` | Protokolliert Betriebsereignisse ab Warnstufe mit Tagesarchivierung. |
|
||||
| M103 | Diagnose und Laufzeitmessung | `Administration/NetworkDiagnostics, PerformanceTests, Profiling` | Misst Übertragungszeiten je Systemabschnitt und erlaubt Laufzeitmessungen. |
|
||||
| M104 | Erscheinungsbild und Symbolsätze | `Administration/Themes, CentronIcons, Nexus/Settings/Branding` | Stellt Farbschemata und Symbolsätze zentral für alle Clients bereit. |
|
||||
| M105 | Nexus ServiceBoard | `src/nexus/CentronNexus/ServiceBoard` | Bietet Mitarbeitern eine browserbasierte Ticketbearbeitung mit Liste, Kanban und Zeiten. |
|
||||
| M106 | Kundenportal | `src/nexus/CentronNexus/WebCart/CustomerPortal` | Gibt Kunden Einsicht in Tickets, Belege, Verträge und freigegebene Dokumente. |
|
||||
| M107 | WebCart | `src/nexus/CentronNexus/WebCart, src/backend/Centron.BL/Sales/Receipts/ReceiptCartBL.cs` | Bietet Kunden einen Warenkorb auf Basis ihrer Sonderpreise. |
|
||||
| M108 | Web-Beleg (WebOffer) | `src/nexus/CentronNexus/WebOffer, ICentronRestService.Receipts (WebReceipt)` | Stellt Belege im Web zur Einsicht und Rückmeldung bereit. |
|
||||
| M109 | Dokumentsignatur und Onlinedokumente | `src/nexus/CentronNexus/DocumentSigning, src/backend/Centron.BL/Security/PdfSigningBL.cs` | Stellt Dokumente über Zugriffsschlüssel bereit und nimmt Bestätigung oder Unterschrift entgegen. |
|
||||
| M110 | Produktionsaufträge im Portal | `src/nexus/CentronNexus/ProductionOrderManagement` | Bildet Produktionsaufträge zusätzlich im Webportal ab. |
|
||||
| M111 | Outlook-Add-In | `src/nexus/CentronNexus.OutlookAddIn` | Macht Tickets, Belege, Kunden und Dokumente aus Outlook heraus zugänglich. |
|
||||
| M112 | Mobile Nutzung | `src/backend/Centron.BL/Mobile, Entities/*Mobile*` | Liefert reduzierte Stammdatensichten für mobile Verbraucher. |
|
||||
| M113 | Legacy-REST-Webservice | `src/webservice/Centron.Host/Services, Centron.WebServices.Core` | Bietet 2.618 Operationen mit einheitlichem Anfrage- und Antwortformat. |
|
||||
| M114 | Moderne REST-API | `src/webservice/Centron.Controllers` | Bietet eine versionierte, ressourcenorientierte Schnittstelle mit Rechteattributen. |
|
||||
| M115 | RMM-/Monitoring-Schnittstelle | `ICentronRestService.RMM.cs, ICentronRestService.RiverDivo.cs` | Erlaubt externen Monitoringsystemen Ticketanlage, Stammdatenabruf und Gerätepflege. |
|
||||
| M116 | Fremdsystemanbindungen | `Centron.Api.docuFORM, DataExchange/Connectors, TelekomDive, GfkExport, Concerto, EbInterface` | Bindet branchentypische Fremdsysteme mit eigener Konfiguration und Lizenz an. |
|
||||
| M117 | Qualitätssicherung und Bauabläufe | `.github/workflows, Directory.Build.props, tests/` | Baut, signiert und prüft jede Änderung automatisiert vor der Aufnahme. |
|
||||
| M118 | Produkt-Lifecycle (PLM) | `src/backend/Centron.BL/Finances/ProductLifecycleBL.cs, Modules/PLM` | Führt die beim Kunden eingesetzten Softwarelizenzen mit Lebenszyklusinformationen. |
|
||||
| M119 | Produktmatrix | `src/backend/Centron.BL/ProductMatrix, Modules/Sales/ProductMatrix` | Bewertet je Kunde die genutzten und offenen Produkte und Dienstleistungen. |
|
||||
| M120 | Qualitätsmanagement | `src/backend/Centron.Interfaces/QM, Modules/QM` | Erfasst und wertet qualitätsrelevante Vorgänge aus. |
|
||||
| M121 | Dashboard | `Modules/Dashboard, Modules/MyCentron/Dashboard, Nexus/ServiceBoard/Dashboard` | Bietet eine Startseite mit zusammenstellbaren Kacheln. |
|
||||
| M122 | Todo-Liste | `src/backend/Centron.BL/ToDoArea, Modules/MyCentron/TodoList` | Führt je Mitarbeiter eine persönliche, objektgebundene Aufgabenliste. |
|
||||
| M123 | Terminanfragen | `src/backend/Centron.BL/AppointmentRequests` | Sendet Terminvorschläge an Kunden und nimmt deren Auswahl entgegen. |
|
||||
| M124 | Kurzverweise und Weblinks | `src/backend/Centron.BL/Urls, WebLinks` | Erzeugt nachverfolgbare Kurzverweise mit Folgeaktionen. |
|
||||
| M125 | Videoportal und Hilfe | `src/backend/Centron.BL/VideoPortal, Modules/Global/VideoPortal, Modules/Global/Help` | Ordnet Anleitungsvideos den Programmbereichen zu. |
|
||||
| M126 | Interne Chats | `src/backend/Centron.BL/Chats` | Führt interne Unterhaltungen mit optionalem Objektbezug. |
|
||||
| M127 | Schlagworte | `src/backend/Centron.BL/Tags` | Versieht Tickets mit wiederverwendbaren Schlagworten. |
|
||||
| M128 | Prozesse | `src/backend/Centron.BL/Processes` | Führt mehrstufige, an Geschäftsobjekte gebundene Prozesse mit Schritten und Bindungen. |
|
||||
| M129 | Asset-Management und IT-Dokumentation | `src/backend/Centron.BL/DocuBoard, DocumentationArea, ItPlanner, 221 AssetManagement-Tabellen` | Dokumentiert und überwacht die IT-Landschaft des Kunden. |
|
||||
| M130 | Handelsplattform (TradePool) | `src/backend/Centron.BL/TradePool` | Liest Artikeldaten einer Handelsplattform ein und macht sie durchsuchbar. |
|
||||
| M131 | Gutscheinverwaltung | `src/backend/Centron.BL/VoucherManagement` | Führt Gutscheine mit Barcode und ihren Zuständen. |
|
||||
| M132 | Reisekostenabrechnung | `Modules/Purchasing/TravelExpense` | Erfasst Reisekosten der Servicemitarbeiter (im vorliegenden Stand deaktiviert). |
|
||||
| M133 | Externe Ticketsystemanbindung | `src/backend/Centron.BL/CPra, ExternalHelpdesk` | Bindet externe Ticket- und Serviceplattformen über Webhooks an. |
|
||||
| M134 | Dokumentensynchronisation | `Modules/DataExchange/DocSync` | Gleicht Dokumente mit einer externen Ablage ab. |
|
||||
| M135 | Listen- und Rasteranpassung | `src/backend/Centron.BL/GUI, Modules/Gui/Profiles, Nexus/Shared/DataGrid` | Speichert Spaltenauswahl, Sortierung und Filter je Benutzer und Liste. |
|
||||
| M136 | Soziale Netzwerke | `src/backend/Centron.BL/SocialMedia` | Führt Verweise auf soziale Netzwerke am Konto und an der Person. |
|
||||
| M137 | Abteilungen und Verkaufsgebiete | `src/backend/Centron.BL/CustomerArea/ContactDepartmentBL.cs, Centron.Controls/SalesAreaManagement` | Ordnet Mitarbeiter Abteilungen und Verkaufsgebieten als Sicht- und Zuweisungsgrenze zu. |
|
||||
| M138 | Betriebs- und Qualitätszusagen | `(kein eigener Codebereich; abgeleitet aus Betriebsartefakten)` | Bündelt Verfügbarkeit, Datensicherung, Aufbewahrung und Mengengerüst als offene Betriebsanforderungen. |
|
||||
| M139 | Abgrenzung zur Vorgängeranwendung | `Alttabellen, DelphiColor-Typen, IsAccountManagementActive` | Erfasst die Aufgabenteilung zwischen c-entron.NET und c-entron classic. |
|
||||
| M140 | Architektur und Schichtung | `docs/getting-started/general-structure.md, Centron.BL/WebServices, Services/Logics` | Legt die sechsstufige Schichtung und die Trennung von Entität, DTO und Ansichtsmodell fest. |
|
||||
| M141 | Ergebnis- und Fehlerbehandlung | `Centron.Interfaces/Results, Interception/Interceptors` | Führt ein einheitliches Ergebnisobjekt mit Meldungscode über alle Schichten. |
|
||||
| M142 | Datenzugriffsschicht | `src/backend/Centron.DAO` | Kapselt den Datenbankzugriff über generische und spezialisierte Zugriffsobjekte. |
|
||||
| M143 | Datenmodellkonventionen | `docs/guides/database/database-conventions.md, Centron.Entities/BaseEntity.cs` | Legt Schlüssel, Namensgebung, Datentypen und Nachverfolgungsspalten verbindlich fest. |
|
||||
| M144 | Zwischenspeicherung | `CentronCache, src/backend/Centron.BL/Services/CachedTableBL.cs` | Hält Rechte, Einstellungen und Stammdaten zwischengespeichert und aktualisiert sie gesteuert. |
|
||||
| M145 | Produktmerkmale (Feature-Schalter) | `ModuleFeatures, Modules/ModuleRegistration.cs` | Schaltet Funktionen unabhängig von Lizenz und Recht schrittweise frei. |
|
||||
| M146 | Belegprotokoll | `src/backend/Centron.BL/Sales/Receipts/ReceiptLogBL.cs, Tabelle AnlageLog` | Hält Belegvorgänge über typisierte Protokollarten fest. |
|
||||
| M147 | Belegpositionen und Klassifikationen | `Entities/Sales/Receipts (Item-Basisklassen), ReceiptItemKind` | Typisiert Belegpositionen und steuert Gliederung, Sichtbarkeit und Berechnung. |
|
||||
| M148 | Vertragsartikelreferenzen | `src/backend/Centron.BL/Sales/CustomerAssets/Contracts/ContractArticleReferenzesBL.cs` | Bildet nutzungsabhängige Vertragspositionen mit eigener Berechnungsvorschrift ab. |
|
||||
| M149 | Länder-, Regions- und Feiertagsstammdaten | `src/backend/Centron.BL/CountryArea, Centron.DAO/Holiday` | Führt Länder, Bundesländer, Währungen und Feiertage als Grundlage fachlicher Regeln. |
|
||||
| M150 | Textbausteine und Variablenersetzung | `src/backend/Centron.BL/TextModuleArea, Core/ReplacementBL.cs` | Führt wiederverwendbare Texte und ersetzt Variablen aus dem Vorgangskontext. |
|
||||
| M151 | Plattform- und Technologiebindung | `global.json, Directory.Build.props, DevExpress.Version.props, version.json` | Legt Laufzeit, Oberflächenbibliothek, Persistenztechnologie und Versionierung zentral fest. |
|
||||
| M152 | Entwicklerschutz | `src/backend/Centron.Common/DeveloperSecurity.cs` | Ersetzt in nicht freigegebenen Ständen externe Empfängeradressen durch eine Ersatzadresse. |
|
||||
| M153 | Portalanmeldung und Sitzungsverwaltung | `src/nexus/CentronNexus/Shared/Auth, Shared/Authorization` | Führt Anmeldung, Ansprüche, Cookierichtlinie und Sitzungsüberwachung des Portals. |
|
||||
| M154 | Steuerelementbibliothek | `src/shared/Centron.Controls, Centron.Controls.Preview` | Stellt wiederverwendbare Oberflächenbausteine mit eigener Übersetzung und Vorschau bereit. |
|
||||
| M155 | Dokumentation | `docs/, README.md, CentronRights.md` | Hält Architektur-, Entwicklungs- und Betriebsregeln im Quellbestand vor. |
|
||||
| M156 | Übertragungssicherheit | `(kein eigener Codebereich; Cookie- und Containerkonfiguration)` | Sichert die Netzverbindungen zwischen Client, Webservice, Portal und Datenbank. |
|
||||
| M157 | WebSuite-Administration | `src/backend/Centron.BL/WebSuite/Administration` | Verwaltet Mitarbeiter und Einstellungen eines gesonderten Weboberflächenbestands. |
|
||||
| M158 | Portalzugriffsverwaltung (Backend) | `src/backend/Centron.BL/Administration/Portal, src/backend/Centron.Gateway/Portal` | Regelt den Zugriff eines Herstellerportals auf den Webservice. |
|
||||
| M159 | TANSS-Anbindung | `src/backend/Centron.BL/DataExchange/TanssInterfaces/TanssBL.cs` | Bindet das Ticketsystem TANSS an. |
|
||||
| M160 | Gateway-Import/-Export | `src/backend/Centron.Gateway/Import/EDI, src/backend/Centron.Gateway/Export/EDI` | Kapselt Lese- und Schreibvorgänge der EDI-Dateiformate im Gateway. |
|
||||
| M161 | Nexus-Office-Bereich | `src/nexus/CentronNexus/Office` | Stellt geteilte Dokumente im Portal dar und nimmt Freigaben entgegen. |
|
||||
| M162 | Nexoware-Erweiterungen | `src/nexus/CentronNexus/Settings/NexowareSmartflow, Centron.Controllers/Controllers/v1/Nexoware` | Bindet Zusatzdienste des Herstellers Nexoware an. |
|
||||
| M163 | Transaktionsklammer (TransactionBL) | `src/backend/Centron.BL/Transactions` | Stellt eine anwendungsseitige Transaktionsklammer bereit. |
|
||||
| M164 | Systemtabellenverwaltung | `src/backend/Centron.BL/SystemArea` | Führt technische Systemtabellen mit Schlüsselwerten. |
|
||||
| M165 | Startlogik (StartBL) | `src/backend/Centron.BL/Start` | Führt beim Programmstart vorbereitende Schritte aus. |
|
||||
| M166 | Werkzeugsammlung (ToolBL) | `src/backend/Centron.BL/Tools` | Bündelt technische Hilfsfunktionen. |
|
||||
| M167 | Lieferantensuche und Lieferantenanlagen | `src/backend/Centron.BL/BusinessPartner` | Sucht Lieferanten und führt lieferantenbezogene Anlagen. |
|
||||
| M168 | Belegerfassung Zahlungsausgang | `src/centron/Centron.WPF.UI/Modules/Warehousing/OutcomingPayments` | Erfasst Zahlungsausgänge an Lieferanten. |
|
||||
| M169 | Kalkulation je Filiale | `src/centron/Centron.WPF.UI/Modules/DataExchange/SupplierOrderPerBranch` | Verteilt Lieferantenbestellungen auf Filialen. |
|
||||
| M170 | Allgemeiner Datenimport und -export | `src/centron/Centron.WPF.UI/Modules/DataExchange/DataImport, .../DataExport` | Liest und schreibt Datenbestände über frei konfigurierbare Abbildungen. |
|
||||
| M171 | Artikel- und Lieferantensuchdialoge | `src/centron/Centron.WPF.UI/Modules/Warehousing/SearchArticle, .../SupplierSearch` | Bietet Suchdialoge für Artikel und Lieferanten. |
|
||||
| M172 | Oberflächen-Hilfsbereiche | `src/centron/Centron.WPF.UI/Modules/Global/FileSystemDialog, .../EmployeeSelection, .../ExceptionMessage, .../Actions` | Stellt wiederkehrende Auswahl- und Meldungsdialoge bereit. |
|
||||
| M173 | Nexus-Ticketsichten (Backend) | `src/backend/Centron.BL/NexusTicketViews` | Führt benutzerdefinierte Ticketsichten des Portals. |
|
||||
| M174 | Versionsauskunft (WebVersion) | `src/backend/Centron.BL/WebVersion` | Gibt die Version des Webservice aus. |
|
||||
| M175 | Bauskripte | `scripts/Centron.Scripts, scripts/Scripts` | Steuert Bau- und Auslieferungsschritte außerhalb der Ablaufdefinitionen. |
|
||||
| M176 | Lieferantenverträge | `src/centron/Centron.WPF.UI/Modules/Finances/Crm/AccountContracts` | Führt Verträge auf der Lieferantenseite. |
|
||||
|
||||
---
|
||||
|
||||
## 4 Abdeckungstabelle
|
||||
|
||||
Jede Zeile des Inventars aus Abschnitt 3 erscheint hier mit ihrer Einstufung und der Anzahl der daraus abgeleiteten Anforderungen. Jede der 446 Anforderungen ist genau einer Inventarzeile zugeordnet; die Summe der Spalte "Anzahl" ergibt daher 446.
|
||||
|
||||
**Einstufungsregel** (rein quantitativ, damit die Angabe nachprüfbar bleibt):
|
||||
|
||||
| Einstufung | Bedingung | Bedeutung |
|
||||
|------------|-----------|-----------|
|
||||
| `tief` | 6 oder mehr Anforderungen | Fachlogik, Datenmodell und durchsetzende Stellen wurden verfolgt |
|
||||
| `mittel` | 3 bis 5 Anforderungen | tragende Regeln erfasst, Randfälle offen |
|
||||
| `flach` | 1 bis 2 Anforderungen | Zweck und ein Kernbeleg erfasst, innere Regeln offen |
|
||||
| `nicht analysiert` | 0 Anforderungen | keine belegbare Aussage bildbar; Grund je Zeile angegeben |
|
||||
|
||||
| Nr. | Modul | Einstufung | Anzahl | Abgeleitete Anforderungen bzw. Grund |
|
||||
|-----|-------|------------|--------|---------------------------------------|
|
||||
| M001 | Mandantenverwaltung | mittel | 3 | StRS-001, SyRS-001, SwRS-001 |
|
||||
| M002 | Filialverwaltung | flach | 1 | StRS-002 |
|
||||
| M003 | Benutzer- und Anmeldeverwaltung | tief | 16 | StRS-003, StRS-004, StRS-009, SyRS-005, SyRS-006, SyRS-007, SyRS-009, SyRS-022, SyRS-023, SyRS-190, SwRS-010, SwRS-011, SwRS-013, SwRS-014, SwRS-015, SwRS-016 |
|
||||
| M004 | Rechteverwaltung | tief | 13 | StRS-005, StRS-006, SyRS-010, SyRS-011, SyRS-012, SyRS-191, SwRS-020, SwRS-021, SwRS-022, SwRS-026, SwRS-027, SwRS-028, SwRS-153 |
|
||||
| M005 | Zwei-Faktor-Authentifizierung | mittel | 3 | StRS-007, SyRS-008, SwRS-012 |
|
||||
| M006 | Microsoft-Anmeldung (OpenID Connect) | flach | 1 | StRS-008 |
|
||||
| M007 | Nummernkreisverwaltung | tief | 7 | StRS-032, StRS-033, SyRS-002, SyRS-033, SyRS-045, SwRS-002, SwRS-056 |
|
||||
| M008 | Lizenzverwaltung | mittel | 5 | StRS-010, SyRS-013, SyRS-014, SyRS-187, SwRS-023 |
|
||||
| M009 | Zugangstokenverwaltung | mittel | 3 | StRS-011, SyRS-015, SwRS-024 |
|
||||
| M010 | Webaccount-Verwaltung | mittel | 3 | StRS-012, SyRS-016, SwRS-025 |
|
||||
| M011 | Änderungsprotokollierung | mittel | 4 | StRS-013, SyRS-018, SwRS-030, SwRS-031 |
|
||||
| M012 | DSGVO / Datenschutz | mittel | 3 | StRS-014, SyRS-019, SwRS-032 |
|
||||
| M013 | Passwort-Manager | tief | 7 | StRS-015, SyRS-020, SyRS-021, SwRS-029, SwRS-033, SwRS-034, SwRS-128 |
|
||||
| M014 | Kontenmodell und Adressen | tief | 7 | StRS-016, StRS-017, StRS-018, SyRS-030, SyRS-031, SwRS-040, SwRS-041 |
|
||||
| M015 | CRM-Aktivitäten | flach | 1 | StRS-019 |
|
||||
| M016 | Kampagnen und Mailing | mittel | 3 | StRS-020, StRS-021, SyRS-034 |
|
||||
| M017 | CRM-Projekte | flach | 2 | StRS-022, SwRS-042 |
|
||||
| M018 | Audits und Fragebögen | flach | 2 | StRS-023, SyRS-035 |
|
||||
| M019 | Preisfindung und Sonderpreise | mittel | 4 | StRS-024, SyRS-036, SwRS-043, SwRS-066 |
|
||||
| M020 | Bankverbindungen und SEPA-Mandate | mittel | 3 | StRS-025, SyRS-060, SwRS-044 |
|
||||
| M021 | Stammblätter (Gerätedokumentation) | mittel | 3 | StRS-026, SyRS-037, SwRS-045 |
|
||||
| M022 | Kundengeräteverwaltung | flach | 1 | SwRS-046 |
|
||||
| M023 | Belegkern | tief | 7 | StRS-027, SyRS-040, SwRS-050, SwRS-051, SwRS-065, SwRS-068, SwRS-069 |
|
||||
| M024 | Belegzustände und Stornierung | mittel | 4 | StRS-028, SyRS-041, SwRS-052, SwRS-067 |
|
||||
| M025 | Belegberechtigung | mittel | 3 | StRS-029, SyRS-042, SwRS-053 |
|
||||
| M026 | Belegversionierung | mittel | 3 | StRS-030, SyRS-043, SwRS-054 |
|
||||
| M027 | Nebenläufigkeitsschutz | mittel | 4 | StRS-031, SyRS-044, SyRS-059, SwRS-055 |
|
||||
| M028 | Zahlungs- und Belegkonditionen | flach | 2 | StRS-034, SyRS-046 |
|
||||
| M029 | Mehrwertsteuerverwaltung | mittel | 3 | StRS-035, SyRS-047, SwRS-057 |
|
||||
| M030 | Währungen und Fremdwährungsbelege | flach | 2 | StRS-036, SyRS-048 |
|
||||
| M031 | Belegvorlagen | mittel | 3 | StRS-037, SyRS-049, SwRS-058 |
|
||||
| M032 | Provisionsabrechnung | mittel | 3 | StRS-038, SyRS-050, SwRS-059 |
|
||||
| M033 | Anzahlungsrechnungen | flach | 2 | StRS-039, SyRS-051 |
|
||||
| M034 | Belegausgabe und Reportanbindung | mittel | 3 | StRS-040, SyRS-052, SwRS-060 |
|
||||
| M035 | E-Rechnung (ZUGFeRD/XRechnung) | mittel | 4 | StRS-041, SyRS-053, SwRS-061, SwRS-114 |
|
||||
| M036 | Freigabewesen Warenkorb | mittel | 3 | StRS-042, SyRS-054, SwRS-062 |
|
||||
| M037 | Projekt- und Sonderpreisimport | flach | 2 | StRS-043, SyRS-055 |
|
||||
| M038 | Vertragsverwaltung | mittel | 5 | StRS-044, SyRS-070, SyRS-079, SwRS-070, SwRS-079 |
|
||||
| M039 | Vertragsabrechnung | tief | 6 | StRS-045, StRS-046, SyRS-071, SyRS-072, SwRS-071, SwRS-072 |
|
||||
| M040 | Kontingentverwaltung | mittel | 3 | StRS-047, SyRS-073, SwRS-073 |
|
||||
| M041 | Zähler- und Klickabrechnung | mittel | 3 | StRS-048, SyRS-074, SwRS-074 |
|
||||
| M042 | RMM-Mengenabrechnung | mittel | 3 | StRS-049, SyRS-075, SwRS-075 |
|
||||
| M043 | Vereinfachte Ticketabrechnung | mittel | 3 | StRS-050, SyRS-076, SwRS-076 |
|
||||
| M044 | Pauschalabrechnung | flach | 2 | StRS-051, SyRS-077 |
|
||||
| M045 | MSP-Auswertung und Collector | mittel | 3 | StRS-052, SyRS-078, SwRS-078 |
|
||||
| M046 | Artikelverwaltung | mittel | 4 | StRS-053, SyRS-080, SwRS-080, SwRS-087 |
|
||||
| M047 | Warengruppenverwaltung | flach | 2 | StRS-054, SyRS-081 |
|
||||
| M048 | Bestandsführung | mittel | 4 | StRS-055, SyRS-082, SwRS-081, SwRS-088 |
|
||||
| M049 | Inventur | mittel | 3 | StRS-056, SyRS-083, SwRS-084 |
|
||||
| M050 | Kommissionierung | mittel | 3 | StRS-057, SyRS-084, SwRS-085 |
|
||||
| M051 | Lieferantenbelege | flach | 2 | StRS-058, SyRS-085 |
|
||||
| M052 | Bestellvorschlagsliste | flach | 2 | StRS-059, SyRS-086 |
|
||||
| M053 | EDI mit Distributoren | mittel | 3 | StRS-060, SyRS-087, SwRS-082 |
|
||||
| M054 | Preisquellen und Preisspiegel | mittel | 4 | StRS-061, SyRS-088, SwRS-083, SwRS-086 |
|
||||
| M055 | Versandanbindung | flach | 2 | StRS-062, SyRS-089 |
|
||||
| M056 | Artikelimport | flach | 2 | StRS-063, SyRS-090 |
|
||||
| M057 | Ticketverwaltung | mittel | 4 | StRS-064, SyRS-100, SyRS-101, SwRS-100 |
|
||||
| M058 | Ticketsichtbarkeit | flach | 1 | StRS-065 |
|
||||
| M059 | Ticketzeiterfassung | mittel | 3 | StRS-066, SyRS-102, SwRS-101 |
|
||||
| M060 | Zeitenschutz und Zeitrechte | mittel | 3 | StRS-067, SyRS-103, SwRS-102 |
|
||||
| M061 | Fälligkeits- und Prioritätenverwaltung | mittel | 3 | StRS-068, SyRS-104, SwRS-103 |
|
||||
| M062 | Eskalationsverwaltung | mittel | 3 | StRS-069, SyRS-105, SwRS-104 |
|
||||
| M063 | Checklisten | mittel | 3 | StRS-070, SyRS-106, SwRS-105 |
|
||||
| M064 | Ticketvorlagen und Ticketprozesse | flach | 2 | StRS-071, SyRS-107 |
|
||||
| M065 | Serviceprojekte und Taskmanagement | flach | 2 | StRS-072, SyRS-108 |
|
||||
| M066 | RMA und Werkstatt | mittel | 3 | StRS-073, SyRS-109, SwRS-109 |
|
||||
| M067 | SelfCare-Formulare | mittel | 3 | StRS-074, SyRS-110, SwRS-106 |
|
||||
| M068 | Mailintegration und MailScanner | flach | 2 | StRS-075, SyRS-111 |
|
||||
| M069 | Erwartete Ereignisse | flach | 2 | StRS-076, SyRS-112 |
|
||||
| M070 | KI-Unterstützung | mittel | 3 | StRS-077, SyRS-113, SwRS-107 |
|
||||
| M071 | Mahnwesen | mittel | 4 | StRS-078, StRS-079, SyRS-120, SwRS-110 |
|
||||
| M072 | Offene Posten und Zahlungseingang | mittel | 4 | StRS-080, SyRS-121, SwRS-112, SwRS-113 |
|
||||
| M073 | SEPA-Zahlungsverkehr | mittel | 4 | StRS-081, SyRS-122, SwRS-111, SwRS-115 |
|
||||
| M074 | Buchhaltungsexport und -import | flach | 2 | StRS-082, SyRS-123 |
|
||||
| M075 | DATEV-Belegtransfer | flach | 1 | StRS-083 |
|
||||
| M076 | Kontenrahmen | flach | 2 | StRS-084, SyRS-124 |
|
||||
| M077 | Kostenstellen und Kostenträger | flach | 2 | StRS-085, SyRS-125 |
|
||||
| M078 | Online-Banking | flach | 2 | StRS-086, SyRS-126 |
|
||||
| M079 | Produktionsaufträge | mittel | 3 | StRS-087, SyRS-130, SwRS-089 |
|
||||
| M080 | Maschinenverwaltung | flach | 1 | StRS-088 |
|
||||
| M081 | Auslastung und Leistungsnachweise | flach | 2 | StRS-089, SyRS-131 |
|
||||
| M082 | Tagesplanung "Mein Tag" | flach | 2 | StRS-090, SyRS-132 |
|
||||
| M083 | Kalender und Exchange-Abgleich | flach | 2 | StRS-091, SyRS-133 |
|
||||
| M084 | Telefonie und Anrufprotokoll | flach | 2 | StRS-092, SyRS-134 |
|
||||
| M085 | Berichtswesen und ReportEngine | mittel | 3 | StRS-093, SyRS-140, SyRS-195 |
|
||||
| M086 | Reportserver | flach | 1 | StRS-094 |
|
||||
| M087 | Dokumentenablage | flach | 2 | StRS-095, SyRS-141 |
|
||||
| M088 | Volltextsuche | mittel | 3 | StRS-096, SyRS-142, SwRS-120 |
|
||||
| M089 | Massendatenpflege (Data Updater) | mittel | 3 | StRS-097, SyRS-143, SwRS-123 |
|
||||
| M090 | Kundenindividuelle Zusatzfelder | flach | 2 | StRS-098, SyRS-144 |
|
||||
| M091 | Lokalisierung | flach | 2 | StRS-099, SyRS-145 |
|
||||
| M092 | Benachrichtigungen | mittel | 3 | StRS-100, SyRS-146, SwRS-125 |
|
||||
| M093 | Externe Werkzeuge | flach | 2 | StRS-101, SyRS-147 |
|
||||
| M094 | Datenbank-Skriptsystem | mittel | 4 | StRS-102, SyRS-148, SwRS-121, SwRS-151 |
|
||||
| M095 | SQL-Manager und Inspektor | flach | 2 | StRS-103, SyRS-149 |
|
||||
| M096 | Hintergrunddienste | tief | 6 | StRS-104, SyRS-150, SyRS-180, SwRS-122, SwRS-148, SwRS-149 |
|
||||
| M097 | Telemetrie | mittel | 3 | StRS-105, SyRS-151, SwRS-124 |
|
||||
| M098 | Windows-Client-Rahmen | mittel | 4 | StRS-106, SyRS-160, SwRS-130, SwRS-006 |
|
||||
| M099 | Installation und Auslieferung | flach | 2 | StRS-107, SyRS-161 |
|
||||
| M100 | Webservice-Betrieb | mittel | 4 | StRS-108, SyRS-003, SyRS-162, SyRS-181 |
|
||||
| M101 | Verbindungs- und Umgebungsverwaltung | flach | 2 | StRS-109, SyRS-163 |
|
||||
| M102 | Protokollierung im Betrieb | mittel | 3 | StRS-110, SyRS-164, SyRS-188 |
|
||||
| M103 | Diagnose und Laufzeitmessung | mittel | 3 | StRS-111, SyRS-165, SyRS-183 |
|
||||
| M104 | Erscheinungsbild und Symbolsätze | flach | 2 | StRS-112, SyRS-166 |
|
||||
| M105 | Nexus ServiceBoard | mittel | 4 | StRS-113, SyRS-167, SyRS-168, SwRS-137 |
|
||||
| M106 | Kundenportal | flach | 1 | StRS-114 |
|
||||
| M107 | WebCart | flach | 2 | StRS-115, SyRS-169 |
|
||||
| M108 | Web-Beleg (WebOffer) | flach | 2 | StRS-116, SyRS-170 |
|
||||
| M109 | Dokumentsignatur und Onlinedokumente | mittel | 4 | StRS-117, SyRS-171, SyRS-182, SyRS-193 |
|
||||
| M110 | Produktionsaufträge im Portal | flach | 1 | StRS-118 |
|
||||
| M111 | Outlook-Add-In | mittel | 3 | StRS-119, SyRS-172, SwRS-138 |
|
||||
| M112 | Mobile Nutzung | flach | 2 | StRS-120, SyRS-173 |
|
||||
| M113 | Legacy-REST-Webservice | mittel | 5 | StRS-121, SyRS-017, SyRS-174, SwRS-017, SwRS-131 |
|
||||
| M114 | Moderne REST-API | mittel | 4 | StRS-122, SyRS-025, SyRS-175, SwRS-132 |
|
||||
| M115 | RMM-/Monitoring-Schnittstelle | mittel | 3 | StRS-123, SyRS-176, SwRS-133 |
|
||||
| M116 | Fremdsystemanbindungen | flach | 2 | StRS-124, SyRS-177 |
|
||||
| M117 | Qualitätssicherung und Bauabläufe | tief | 7 | StRS-125, SyRS-178, SyRS-179, SwRS-140, SwRS-144, SwRS-147, SwRS-154 |
|
||||
| M118 | Produkt-Lifecycle (PLM) | flach | 1 | StRS-126 |
|
||||
| M119 | Produktmatrix | flach | 1 | StRS-127 |
|
||||
| M120 | Qualitätsmanagement | flach | 1 | StRS-128 |
|
||||
| M121 | Dashboard | flach | 1 | StRS-129 |
|
||||
| M122 | Todo-Liste | flach | 1 | StRS-130 |
|
||||
| M123 | Terminanfragen | flach | 1 | StRS-131 |
|
||||
| M124 | Kurzverweise und Weblinks | flach | 1 | StRS-132 |
|
||||
| M125 | Videoportal und Hilfe | flach | 1 | StRS-133 |
|
||||
| M126 | Interne Chats | flach | 1 | StRS-134 |
|
||||
| M127 | Schlagworte | flach | 1 | StRS-135 |
|
||||
| M128 | Prozesse | flach | 1 | StRS-136 |
|
||||
| M129 | Asset-Management und IT-Dokumentation | flach | 1 | StRS-137 |
|
||||
| M130 | Handelsplattform (TradePool) | flach | 1 | StRS-138 |
|
||||
| M131 | Gutscheinverwaltung | flach | 1 | StRS-139 |
|
||||
| M132 | Reisekostenabrechnung | flach | 1 | StRS-140 |
|
||||
| M133 | Externe Ticketsystemanbindung | flach | 1 | StRS-141 |
|
||||
| M134 | Dokumentensynchronisation | flach | 1 | StRS-142 |
|
||||
| M135 | Listen- und Rasteranpassung | flach | 1 | StRS-143 |
|
||||
| M136 | Soziale Netzwerke | flach | 1 | StRS-144 |
|
||||
| M137 | Abteilungen und Verkaufsgebiete | flach | 1 | StRS-145 |
|
||||
| M138 | Betriebs- und Qualitätszusagen | tief | 7 | StRS-146, StRS-147, StRS-148, StRS-149, SyRS-186, SyRS-192, SyRS-194 |
|
||||
| M139 | Abgrenzung zur Vorgängeranwendung | tief | 6 | StRS-150, SyRS-184, SwRS-047, SwRS-048, SwRS-063, SwRS-146 |
|
||||
| M140 | Architektur und Schichtung | mittel | 5 | SwRS-003, SwRS-005, SwRS-127, SwRS-150, SwRS-155 |
|
||||
| M141 | Ergebnis- und Fehlerbehandlung | mittel | 4 | SwRS-004, SwRS-007, SwRS-141, SyRS-024 |
|
||||
| M142 | Datenzugriffsschicht | tief | 6 | SwRS-008, SwRS-009, SwRS-038, SwRS-049, SwRS-142, SyRS-057 |
|
||||
| M143 | Datenmodellkonventionen | mittel | 5 | SwRS-035, SwRS-036, SwRS-037, SwRS-039, SyRS-029 |
|
||||
| M144 | Zwischenspeicherung | mittel | 4 | SwRS-018, SwRS-126, SwRS-143, SyRS-032 |
|
||||
| M145 | Produktmerkmale (Feature-Schalter) | flach | 2 | SwRS-019, SwRS-129 |
|
||||
| M146 | Belegprotokoll | flach | 2 | SwRS-064, SwRS-108 |
|
||||
| M147 | Belegpositionen und Klassifikationen | flach | 2 | SyRS-056, SyRS-058 |
|
||||
| M148 | Vertragsartikelreferenzen | flach | 1 | SwRS-077 |
|
||||
| M149 | Länder-, Regions- und Feiertagsstammdaten | flach | 1 | SyRS-038 |
|
||||
| M150 | Textbausteine und Variablenersetzung | flach | 2 | SyRS-039, SwRS-136 |
|
||||
| M151 | Plattform- und Technologiebindung | flach | 2 | SyRS-004, SwRS-152 |
|
||||
| M152 | Entwicklerschutz | flach | 2 | SyRS-028, SwRS-135 |
|
||||
| M153 | Portalanmeldung und Sitzungsverwaltung | mittel | 3 | SyRS-026, SyRS-027, SwRS-134 |
|
||||
| M154 | Steuerelementbibliothek | flach | 1 | SwRS-139 |
|
||||
| M155 | Dokumentation | flach | 1 | SwRS-145 |
|
||||
| M156 | Übertragungssicherheit | flach | 2 | SyRS-185, SyRS-189 |
|
||||
| M157 | WebSuite-Administration | nicht analysiert | 0 | _nicht analysiert:_ Nur zwei Unterordner ohne aufrufende Oberfläche im Bestand gefunden; ohne Aufrufer war keine belegbare fachliche Aussage bildbar. |
|
||||
| M158 | Portalzugriffsverwaltung (Backend) | nicht analysiert | 0 | _nicht analysiert:_ Zugriffsprüfung liegt in PortalWebServiceAccessBL; die durchsetzende Bedingung wurde im Zeitrahmen nicht bis zur Belegstufe PRIMÄR aufgelöst. |
|
||||
| M159 | TANSS-Anbindung | nicht analysiert | 0 | _nicht analysiert:_ Eine einzelne Klasse ohne begleitende Konfiguration oder Dokumentation; Auslöser und Datenrichtung nicht belegbar. |
|
||||
| M160 | Gateway-Import/-Export | nicht analysiert | 0 | _nicht analysiert:_ Formatdetails je Distributor nicht im Zeitrahmen erhoben; die Nutzenaussage ist bereits über M053 belegt. |
|
||||
| M161 | Nexus-Office-Bereich | nicht analysiert | 0 | _nicht analysiert:_ Überschneidet sich mit M109; die eigenständige Abgrenzung beider Bereiche war nicht belegbar. |
|
||||
| M162 | Nexoware-Erweiterungen | nicht analysiert | 0 | _nicht analysiert:_ Funktion ohne Gegenstelle und ohne Dokumentation im Bestand nicht bestimmbar. |
|
||||
| M163 | Transaktionsklammer (TransactionBL) | nicht analysiert | 0 | _nicht analysiert:_ Aufrufstellen nicht systematisch erhoben; ohne sie ist keine verlässliche Aussage zur Transaktionsgrenze möglich. |
|
||||
| M164 | Systemtabellenverwaltung | nicht analysiert | 0 | _nicht analysiert:_ Rein technische Hilfsschicht ohne erkennbare eigenständige fachliche Aussage. |
|
||||
| M165 | Startlogik (StartBL) | nicht analysiert | 0 | _nicht analysiert:_ Die Abfolge der Startschritte wurde nicht vollständig gelesen; eine Teilaussage wäre nicht belegbar gewesen. |
|
||||
| M166 | Werkzeugsammlung (ToolBL) | nicht analysiert | 0 | _nicht analysiert:_ Sammelbereich ohne einheitliche fachliche Aufgabe; einzelne Funktionen wären nur punktuell belegbar. |
|
||||
| M167 | Lieferantensuche und Lieferantenanlagen | nicht analysiert | 0 | _nicht analysiert:_ Abgrenzung gegenüber M014 und M051 im Zeitrahmen nicht auflösbar. |
|
||||
| M168 | Belegerfassung Zahlungsausgang | nicht analysiert | 0 | _nicht analysiert:_ Gegenstück zu M072 auf der Einkaufsseite; im Zeitrahmen nicht bis zur durchsetzenden Stelle verfolgt. |
|
||||
| M169 | Kalkulation je Filiale | nicht analysiert | 0 | _nicht analysiert:_ Modul ohne begleitende Dokumentation; die Verteilregel war nicht belegbar. |
|
||||
| M170 | Allgemeiner Datenimport und -export | nicht analysiert | 0 | _nicht analysiert:_ Konfigurierbarkeit macht eine belegbare Aussage über den Funktionsumfang ohne Beispielkonfiguration unmöglich. |
|
||||
| M171 | Artikel- und Lieferantensuchdialoge | nicht analysiert | 0 | _nicht analysiert:_ Oberflächendialoge ohne eigene Geschäftsregel; Suchlogik liegt in bereits erfassten Bereichen. |
|
||||
| M172 | Oberflächen-Hilfsbereiche | nicht analysiert | 0 | _nicht analysiert:_ Reine Oberflächenbausteine ohne eigenständige fachliche Regel. |
|
||||
| M173 | Nexus-Ticketsichten (Backend) | nicht analysiert | 0 | _nicht analysiert:_ Abgrenzung gegenüber M135 nicht belegbar; Speicherort und Geltungsbereich nicht erhoben. |
|
||||
| M174 | Versionsauskunft (WebVersion) | nicht analysiert | 0 | _nicht analysiert:_ Technische Auskunftsfunktion ohne fachliche Aussage. |
|
||||
| M175 | Bauskripte | nicht analysiert | 0 | _nicht analysiert:_ Im Zeitrahmen nicht gelesen; die Aussagen zu Bau und Auslieferung stützen sich auf M117 und M099. |
|
||||
| M176 | Lieferantenverträge | nicht analysiert | 0 | _nicht analysiert:_ Abgrenzung gegenüber M038 im Zeitrahmen nicht auflösbar; Doppelerfassung nicht ausgeschlossen. |
|
||||
|
||||
### 4.1 Verteilung der Abdeckung
|
||||
|
||||
| Einstufung | Module | Anteil | Anforderungen daraus |
|
||||
|------------|--------|--------|----------------------|
|
||||
| `tief` | 12 | 6,8 % | 95 |
|
||||
| `mittel` | 67 | 38,1 % | 231 |
|
||||
| `flach` | 77 | 43,8 % | 120 |
|
||||
| `nicht analysiert` | 20 | 11,4 % | 0 |
|
||||
| **Summe** | **176** | **100 %** | **446** |
|
||||
|
||||
Die Verteilung entspricht der Vorgabe "Breite geht vor Tiefe": 156 von 176 Inventarzeilen (88,6 %) tragen mindestens eine belegte Anforderung, und nur 12 Zeilen erreichen die Einstufung `tief`.
|
||||
|
||||
| Modul | Anforderungen | Grund der Vertiefung |
|
||||
|-------|---------------|----------------------|
|
||||
| M003 Benutzer- und Anmeldeverwaltung | 16 | Sicherheitsregel (Schritt 0c) |
|
||||
| M004 Rechteverwaltung | 13 | Berechtigungen (Schritt 0c) |
|
||||
| M007 Nummernkreisverwaltung | 7 | Abrechnung – Rechnungsnummernvergabe (Schritt 0c) |
|
||||
| M013 Passwort-Manager | 7 | Sicherheitsregel (Schritt 0c) |
|
||||
| M014 Kontenmodell und Adressen | 7 | Grundlage nahezu aller Fachprozesse |
|
||||
| M023 Belegkern | 7 | Abrechnung (Schritt 0c) |
|
||||
| M039 Vertragsabrechnung | 6 | Abrechnung (Schritt 0c) |
|
||||
| M096 Hintergrunddienste | 6 | Abrechnung – die Fakturierung läuft zeitgesteuert |
|
||||
| M117 Qualitätssicherung und Bauabläufe | 7 | Ableitung von Betriebs- und Qualitätsanforderungen |
|
||||
| M138 Betriebs- und Qualitätszusagen | 7 | Sammelzeile; siehe Einschränkung unten |
|
||||
| M139 Abgrenzung zur Vorgängeranwendung | 6 | Migrationsperspektive |
|
||||
| M142 Datenzugriffsschicht | 6 | trägt Nebenläufigkeits- und Transaktionsverhalten |
|
||||
|
||||
Zwei Einschränkungen zur Aussagekraft dieser Einstufung sind zu nennen. Erstens ist die Regel rein quantitativ; sie misst die Zahl der gebildeten Anforderungen, nicht die Tiefe der Durchdringung. Zweitens ist M138 dadurch als `tief` eingestuft, obwohl es die schwächste Zeile des gesamten Bestands ist: Die Zeile bündelt Verfügbarkeit, Datensicherung, Aufbewahrung und Mengengerüst, und **alle sieben** ihrer Anforderungen sind `[HYPOTHESE]`. Die Einstufung ist damit formal richtig und fachlich irreführend – sie ist hier bewusst nicht von Hand korrigiert worden, damit die Regel über alle 176 Zeilen gleich angewandt bleibt.
|
||||
|
||||
Zwei nach Schritt 0c erwartete Schwerpunkte erreichen die Stufe `tief` nicht: M019 (Preisfindung, 4 Anforderungen) und M038 (Vertragsverwaltung, 5) liegen knapp darunter, M113 (Legacy-Schnittstelle, 5) ebenfalls – bei letzterer deshalb, weil ihre Sicherheitsaussagen an den schichtübergreifenden Zeilen M141 und M152 hängen. In der Sache sind alle drei bis auf die durchsetzende Stelle verfolgt.
|
||||
|
||||
---
|
||||
|
||||
## 5 Konsistenzcheck
|
||||
|
||||
Der Check lief maschinell über alle 446 Anforderungsblöcke in `StRS.md`, `SyRS.md` und `SwRS.md` sowie über `Traceability.md` und `Hypothesen.md`.
|
||||
|
||||
### 5.1 Formale Prüfungen
|
||||
|
||||
| Nr. | Prüfung | Ergebnis | Bewertung |
|
||||
|-----|---------|----------|-----------|
|
||||
| 1 | Anforderungsblöcke insgesamt | 446 | – |
|
||||
| 2 | Mehrfach vergebene IDs | **0** | bestanden |
|
||||
| 3 | Blöcke mit fehlendem Pflichtfeld (16 Felder je Block) | **0** | bestanden |
|
||||
| 4 | Anforderungen ohne jeden Beleg | **0** | bestanden |
|
||||
| 5 | Anforderungen ohne `Übernahmewürdigkeit` | **0** | bestanden |
|
||||
| 6 | Anforderungen ohne `Prüfidee` | **0** | bestanden |
|
||||
| 7 | Tracelinks auf nicht existierende IDs (368 eindeutige Ziele) | **0** | bestanden |
|
||||
| 8 | Inline-`[HYPOTHESE]` gegen Feld `Status: HYPOTHESE` | 36 = 36, Differenzmenge leer | bestanden |
|
||||
| 9 | `Hypothesen.md` gegen Inline-Markierungen | 36 = 36, Differenzmenge leer | bestanden |
|
||||
| 10 | SyRS-Anforderungen mit Verweis auf mindestens eine StRS | 155 von 155 | bestanden |
|
||||
| 11 | SwRS-Anforderungen mit Verweis auf mindestens eine SyRS | 141 von 141 | bestanden |
|
||||
| 12 | StRS-Anforderungen ohne verfeinernde SyRS | **19** | siehe Abschnitt 7, Lücke L1 |
|
||||
| 13 | IDs, die in `Traceability.md` fehlen | **0** | bestanden |
|
||||
| 14 | Wort- oder deckungsgleiche Titel ohne Konsolidierungsvermerk | **0** | bestanden |
|
||||
| 15 | Anforderungen mit `Qualitätsmerkmal` im dafür vorgesehenen Feld | 181 | siehe Abschnitt 5.4 |
|
||||
|
||||
Prüfung 12 ist der einzige offene Punkt. Die betroffenen Anforderungen sind StRS-126 bis StRS-136 und StRS-138 bis StRS-145 – durchweg Module der Einstufung `flach`, für die auf Stakeholderebene ein belegter Zweck festgehalten, auf Systemebene aber keine belegbare Verhaltensaussage gebildet werden konnte. Sie sind keine Traceability-Fehler, sondern eine bewusst offengelassene Verfeinerungslücke; `Traceability.md` weist sie gesondert aus.
|
||||
|
||||
### 5.2 Belegsituation
|
||||
|
||||
| Belegklasse | Anzahl | Anteil |
|
||||
|-------------|--------|--------|
|
||||
| `PRIMÄR` (durchgesetzte Regel im Code oder Datenbankbedingung) | 1.067 | 85,0 % |
|
||||
| `SEKUNDÄR` (Oberflächentext, Fehlermeldung, Berichtslayout, Abbildungstabelle, Konfigurationsschalter) | 111 | 8,8 % |
|
||||
| `KONTEXT` (Kommentar, Bezeichner, Dokumentationsverweis) | 77 | 6,1 % |
|
||||
| **Summe** | **1.255** | **100 %** |
|
||||
|
||||
Acht Anforderungen tragen ausschließlich `SEKUNDÄR`- oder `KONTEXT`-Belege: StRS-021, StRS-120, StRS-128, StRS-142, StRS-146, StRS-147, StRS-149 und SyRS-173. Alle acht sind als `[HYPOTHESE]` gekennzeichnet – die Regel "ohne durchgesetzte Stelle keine belegte Anforderung" ist damit ausnahmslos eingehalten.
|
||||
|
||||
### 5.3 Übernahmewürdigkeit und Anforderungsarten
|
||||
|
||||
| `Übernahmewürdigkeit` | Anzahl | Anteil |
|
||||
|-----------------------|--------|--------|
|
||||
| `übernehmen` | 411 | 92,2 % |
|
||||
| `Workaround` | 18 | 4,0 % |
|
||||
| `veraltet` | 15 | 3,4 % |
|
||||
| `Sonderfall` | 2 | 0,4 % |
|
||||
|
||||
| `Typ` | Anzahl |
|
||||
|-------|--------|
|
||||
| funktional | 217 |
|
||||
| Sicherheit | 69 |
|
||||
| Daten | 69 |
|
||||
| Schnittstelle | 46 |
|
||||
| nicht-funktional | 45 |
|
||||
|
||||
Der Anteil von 92,2 % `übernehmen` ist plausibel, weil die Analyse breit angelegt war und tragende Fachfunktionen überwiegen; die 35 Anforderungen mit `Workaround`, `veraltet` oder `Sonderfall` betreffen erkennbare Altlasten – unter anderem die SHA-1-Kennwortspeicherung (SyRS-007), den fest im Quelltext hinterlegten Verschlüsselungsschlüssel (SwRS-029), die temporären Legacy-Entitäten des Belegwesens (SwRS-047, SwRS-048) und die deaktivierte Reisekostenabrechnung (StRS-140).
|
||||
|
||||
### 5.4 Zuordnung der Qualitätsmerkmale
|
||||
|
||||
Der Check deckte einen Verstoß gegen die Formatvorgabe im eigenen Bestand auf und führte zu einer Korrektur: 53 Anforderungen trugen den Wert `Sicherheit` im Feld `Typ`, ließen das Feld `Qualitätsmerkmal` aber leer. Da `Sicherheit` zugleich ein Qualitätsmerkmal nach ISO/IEC 25010 ist, wäre die Merkmalsangabe damit faktisch im Feld `Typ` gestanden. Zwei dieser Anforderungen (SyRS-013, SwRS-023 zur Lizenzprüfung) wurden auf `Typ: funktional` umgestellt, weil sie eine Funktionsprüfung und keine Sicherheitseigenschaft beschreiben; die übrigen 51 haben das zutreffende Untermerkmal im Feld `Qualitätsmerkmal` erhalten. Zusätzlich wurden acht abweichend benannte Merkmale auf die Begriffe der Norm vereinheitlicht (`Zugriffskontrolle` → `Vertraulichkeit`, `Nachweisbarkeit` → `Zurechenbarkeit`, `Sicherheit (Verfügbarkeit)` → `Sicherheit (Widerstandsfähigkeit)`).
|
||||
|
||||
Nach der Korrektur tragen 181 Anforderungen ein Qualitätsmerkmal. Die 98 Anforderungen mit `Typ: Daten` oder `Typ: Schnittstelle` ohne Merkmalsangabe sind kein Verstoß: `Daten` und `Schnittstelle` sind Anforderungsklassen nach ISO/IEC/IEEE 29148 und keine Qualitätsmerkmale nach ISO/IEC 25010; die Vorgabe verlangt die Merkmalsangabe ausdrücklich nur für nicht-funktionale Anforderungen.
|
||||
|
||||
### 5.5 Im Lauf korrigierte Befunde
|
||||
|
||||
Die folgenden Angaben waren in einer Zwischenfassung falsch und wurden vor der Fertigstellung durch Nachzählung berichtigt. Sie sind hier aufgeführt, weil sie zeigen, an welchen Stellen eine Schätzung ohne Nachzählung in die Irre geführt hätte.
|
||||
|
||||
| Gegenstand | Zwischenstand | Nachgezählt | Auswirkung |
|
||||
|------------|---------------|-------------|------------|
|
||||
| Controller der modernen REST-API | 27 | **41** | Umfangsangabe in StRS-122 und SyRS-175 |
|
||||
| Operationen der RMM-/RiverDivo-Schnittstelle | 28 | **29** je Seite | StRS-123 |
|
||||
| Einstellungscontroller in `ModuleRegistration` | 85 | **83** | StRS-106, SwRS-130 |
|
||||
| Tabellen mit Präfix `AssetManagement` | 17 | **221** | StRS-137 – die Hypothese wurde dadurch erheblich stärker: 221 Tabellen stehen 3 Fachklassen gegenüber |
|
||||
| Rechteabschnitte in `CentronRights.md` | 30 | **35** | SwRS-145 |
|
||||
| Operationen ohne `[Authenticate]` | zunächst zu hoch (fehlerhafte Attributauswertung über zwei Zeilen) | **171 von 2.618** | SyRS-017 – die erste Auswertung meldete Operationen als ungeschützt, die das Attribut in derselben Zeile tragen |
|
||||
| Methodenname im Warenkorb | `ReceiptCartBL.CreateCart` | **`CreateNewCart(LoggedInUser, string, string)`** | StRS-115, SwRS-062 |
|
||||
| Ablageort von `LoggedInUser.cs` | `Centron.Interfaces/Administration/Logins/` | **`Centron.Entities/Entities/Administration/Logins/`** | SwRS-015 |
|
||||
| Belegstornierung | Annahme einer Methode `ReceiptBL.DeleteReceipt(int, CentronObjectKindNumeric)` aus der Dokumentation | in `Centron.BL` **nicht vorhanden**; dort existiert nur `DeleteReceiptUserState(int)` | StRS-148 wurde umgeschrieben: Die Abweichung zwischen Dokumentation und Code ist nun selbst der belegte Befund |
|
||||
| Fehlende Verfeinerungsverweise | 6 SwRS ohne SyRS-Bezug, 4 Ketten ohne StRS-Wurzel | ergänzt | SwRS-005, 035, 036, 039, 049, 064, 069, 108, 127, 150 |
|
||||
|
||||
Der letzte Fall ist der wichtigste: Eine Aussage, die aus der mitgelieferten Dokumentation übernommen und nicht am Code geprüft worden wäre, hätte eine nicht existierende Methode als belegte Anforderung ausgewiesen. Die Prüfung am Quelltext hat das verhindert; für das Zielsystem ist der tatsächliche Befund – Belege werden storniert, nicht gelöscht – die verwertbare Aussage.
|
||||
|
||||
### 5.6 Inhaltsgleiche Anforderungen und Konsolidierungsbedarf
|
||||
|
||||
Kein Paar von Anforderungen ist wort- oder deckungsgleich, ohne als Konsolidierungskandidat gekennzeichnet zu sein (Prüfung 14). Anforderungen, die denselben Sachverhalt auf verschiedenen Ebenen beschreiben, sind bewusst nicht als Konsolidierungsfall geführt; sie sind über Tracelinks verbunden, wie in der Vorgabe verlangt.
|
||||
|
||||
141 Anforderungen (31,6 %) benennen einen Konsolidierungskandidaten im Sinne der Vorgabe: fachlich gleichwertige Gegenstände in getrennten Umsetzungen. Die tragenden Fälle:
|
||||
|
||||
| Fachlicher Gegenstand | Getrennte Umsetzungen | Anforderungen |
|
||||
|-----------------------|------------------------|---------------|
|
||||
| Gerätebestand beim Kunden | `MasterDataList`/`GeraeteKopf` (Stammblätter), `AccountDevices`, `AssetManagementDevices` – drei Datenhaltungen für dasselbe Geschäftsobjekt | StRS-026, StRS-137, SwRS-045, SwRS-046 |
|
||||
| Geschäftspartner | Alttabellen `Kunden`/`Kreditor` neben den Sichten `Accounts`/`AccountCustomers`/`AccountSuppliers`; Module `AccountManagement` und `Crm` | StRS-016, StRS-017, SyRS-030, SwRS-040 |
|
||||
| Belegpersistenz | modernes Entitätsmodell, temporäre Legacy-Entitäten `*Kopf`/`*Pos`, elf `SaveReceipt*Repository`-Klassen | StRS-027, SyRS-043, SwRS-047, SwRS-048, SwRS-051 |
|
||||
| Fachfunktionen des Clients | jede Funktion doppelt als `BL`- und `WS`-Umsetzung (direkter Datenbankzugriff neben Webservicezugriff) | StRS-106, SwRS-003, SwRS-005 |
|
||||
| Schnittstellen | Legacy-REST (2.618 Operationen) neben moderner versionierter API (41 Controller) mit überlappendem Umfang | StRS-121, StRS-122, SyRS-024, SwRS-131, SwRS-132 |
|
||||
| Monitoringanbindung | `RMMinterface/*` und `RiverDivo/*` – zwei vollständig parallele Schnittstellen mit je 29 gleichnamigen Operationen | StRS-123, SyRS-176, SwRS-133 |
|
||||
| Änderungsprotokolle | 36 Entitäten mit Endung `Log` und 27 mit Endung `History` für denselben Zweck | StRS-013, SyRS-080, SwRS-030, SwRS-031 |
|
||||
| Benachrichtigungen | `CentronNotification`, `NexusNotification`, `UserNotification`, `MyDayNotification`, Eskalationsmeldungen – fünf Wege | StRS-100, SyRS-146, SwRS-125 |
|
||||
| Abrechnung von Serviceleistungen | vereinfachte Ticketabrechnung, Vertragsabrechnung, Pauschalabrechnung – drei Wege für dieselben Ticketzeiten | StRS-050, StRS-045, StRS-051 |
|
||||
| Preisfindung | fünf interne Preisquellen (Preisliste, Sonderpreis, Aktionspreis, Projektpreis, Vertragspreis) und sieben Einkaufspreisquellen | StRS-024, StRS-061, SwRS-043, SwRS-066 |
|
||||
| Projektbegriff | `CrmProject`, `TicketProject`, `ReceiptContract.ProjectNumber` | StRS-022, StRS-072 |
|
||||
| Rechtedurchsetzung | drei Baukästen: `ModuleRegistration` (Client), `CentronAuthorization`/Policies (Portal), `AuthorizeUserRight*` (API) | StRS-005, SyRS-011, SwRS-027, SwRS-028 |
|
||||
| Sichtbarkeitsregel für Tickets | `HelpdeskBL.GetShowHelpdeskRight` und `TicketFilterService` – dieselbe Regel getrennt umgesetzt | StRS-065, SwRS-021, SwRS-022 |
|
||||
| Nebenläufigkeitsschutz | optimistische Sperre (`ConcurrencyControlGuid`) und pessimistische Sperre (`AssetLock`) nebeneinander | StRS-031, SyRS-044, SwRS-055 |
|
||||
| Kryptografische Bausteine | `SHA1Decoder`, `SHA512CryptoLogic`, `AESCryptoLogic`, `CryptoControl`, `CryptoUtils`, `AccessTokenBL.HashToken` | SwRS-029, SyRS-007 |
|
||||
| Inventur | `InventoryBL`, `InventoryNewBL`, `InventorysBL` | StRS-056, SwRS-084 |
|
||||
| Datenbenennung | deutschsprachige Basistabellen neben englischsprachigen Sichten für dieselben Daten | SyRS-057, SwRS-035, SwRS-049 |
|
||||
|
||||
Der in der Aufgabenstellung genannte Beispielfall – Drucker als "Stammblätter", andere Hardware als "Assets" – ist damit nicht nur bestätigt, sondern um eine dritte Haltung erweitert: `AssetManagementDevices` mit 221 zugehörigen Tabellen.
|
||||
|
||||
|
||||
### 5.7 Risikorelevante Anforderungen und ihre Belegsituation
|
||||
|
||||
Diese Liste macht Verstöße gegen die risikobasierte Priorisierung innerhalb des Laufs sichtbar. Als risikorelevant gilt eine Anforderung, deren **Titel oder Aussage** Sicherheitsregeln, Abrechnung oder Berechtigungen zum Gegenstand hat; das Kriterium wurde maschinell und einheitlich über alle 446 Blöcke angewandt (Stichwortmenge: Recht, Berechtigung, Authentifizierung, Anmeldung, Kennwort, Verschlüsselung, Signatur, Token, Lizenz, Rechnung, Abrechnung, Mahnung, Zahlung, SEPA, Provision, Preis, Steuer, Sicherheit, Freigabe, Sichtbarkeit, Zugriff, Storno, Gutschrift). Es wurde bewusst weit gefasst: Lieber eine fachlich harmlose Anforderung zu viel in der Prüfung als eine sicherheitsrelevante zu wenig.
|
||||
|
||||
**Ergebnis: 227 von 446 Anforderungen (50,9 %) sind risikorelevant. Alle 227 tragen mindestens einen `PRIMÄR`-Beleg mit durchsetzender Stelle. Es gibt keinen Verstoß gegen die risikobasierte Priorisierung.**
|
||||
|
||||
Zwölf der 227 sind zusätzlich als `[HYPOTHESE]` gekennzeichnet. Das ist kein Widerspruch: Der belegte Kern der Aussage ist durch die durchsetzende Stelle abgedeckt, die Aussage reicht aber darüber hinaus – etwa SyRS-189, wo die Zählung der Aufrufe belegt ist, eine Begrenzung jedoch nachweislich fehlt und die Anforderung deshalb eine Sollaussage über den Zielzustand trifft.
|
||||
|
||||
Verteilung: 75 StRS, 89 SyRS, 63 SwRS.
|
||||
|
||||
| ID | Titel | PRIMÄR-Beleg | Kennzeichnung |
|
||||
|----|-------|--------------|---------------|
|
||||
| StRS-001 | Mandantenfähige Abbildung der eigenen Unternehmensstruktur | ja | – |
|
||||
| StRS-003 | Anmeldung interner Benutzer mit Benutzername und Kennwort | ja | – |
|
||||
| StRS-004 | Zeitlich und dauerhaft steuerbare Deaktivierung von Benutzerkonten | ja | – |
|
||||
| StRS-005 | Rechtebasierter Zugang zu Fachmodulen | ja | – |
|
||||
| StRS-006 | Einschränkende Rechte begrenzen die Sicht auf eigene Vorgänge oder die eigene Filiale | ja | – |
|
||||
| StRS-007 | Zwei-Faktor-Authentifizierung mit konfigurierbarer Gültigkeitsdauer | ja | – |
|
||||
| StRS-008 | Anmeldung über Microsoft Entra ID (OpenID Connect) | ja | – |
|
||||
| StRS-009 | Anmeldung über Active Directory als Alternative zur lokalen Kennwortprüfung | ja | – |
|
||||
| StRS-010 | Lizenzgesteuerter Funktionsumfang | ja | – |
|
||||
| StRS-011 | Zugangstoken für die Anbindung externer Systeme | ja | – |
|
||||
| StRS-012 | Kundenzugang über Webaccounts mit eigenem Rechtesystem | ja | – |
|
||||
| StRS-014 | Datenschutzgerechte Löschung personenbezogener Daten | ja | – |
|
||||
| StRS-015 | Verwaltung von Kundenzugangsdaten im Passwort-Manager | ja | – |
|
||||
| StRS-023 | Kundenaudits und Fragebögen | ja | – |
|
||||
| StRS-024 | Kundenspezifische Sonderpreise und Preislisten | ja | – |
|
||||
| StRS-025 | Bankverbindungen und SEPA-Mandate am Geschäftspartner | ja | – |
|
||||
| StRS-027 | Durchgängige Belegkette vom Angebot bis zur Rechnung | ja | – |
|
||||
| StRS-029 | Belege dürfen nur von berechtigten Benutzern der zuständigen Filiale bearbeitet werden | ja | – |
|
||||
| StRS-033 | Lückenlose und kollisionsfreie Vergabe von Belegnummern | ja | – |
|
||||
| StRS-034 | Zahlungsbedingungen mit Skontostaffel und belegartbezogener Gültigkeit | ja | – |
|
||||
| StRS-035 | Mehrwertsteuer mit zeitlicher Gültigkeitskette | ja | – |
|
||||
| StRS-036 | Belege in Fremdwährung | ja | – |
|
||||
| StRS-038 | Provisionsabrechnung für Vertriebsmitarbeiter | ja | – |
|
||||
| StRS-039 | Anzahlungsrechnungen und Schlussrechnung mit Anzahlungsverrechnung | ja | – |
|
||||
| StRS-041 | Elektronische Rechnung nach ZUGFeRD und XRechnung | ja | – |
|
||||
| StRS-042 | Zweistufiges Freigabewesen für Kundenwarenkörbe | ja | – |
|
||||
| StRS-043 | Import von Projekt- und Sonderpreisen aus Lieferantendateien | ja | – |
|
||||
| StRS-044 | Wartungs- und Serviceverträge als eigene Belegart | ja | – |
|
||||
| StRS-045 | Automatische Rechnungsstellung aus Verträgen | ja | – |
|
||||
| StRS-046 | Abrechnungsintervalle mit Vielfachen und Mehrfachperioden je Rechnung | ja | – |
|
||||
| StRS-047 | Kontingentverwaltung und Kontingentgrenzen im Vertrag | ja | – |
|
||||
| StRS-048 | Zählerbasierte Abrechnung von Druck- und Kopiergeräten | ja | – |
|
||||
| StRS-049 | Nutzungsabhängige Abrechnung anhand von Daten eines externen RMM-Systems | ja | – |
|
||||
| StRS-050 | Vereinfachte Abrechnung erfasster Ticketzeiten | ja | – |
|
||||
| StRS-051 | Pauschalabrechnung von Projekten | ja | – |
|
||||
| StRS-052 | Auswertung von Verträgen und Managed-Service-Beständen | ja | – |
|
||||
| StRS-053 | Artikelstamm mit Preisen, Einheiten und Warengruppenzuordnung | ja | – |
|
||||
| StRS-054 | Warengruppen als Ordnungs- und Steuerungsmerkmal | ja | – |
|
||||
| StRS-055 | Bestandsführung über mehrere Lager, Lagerbereiche und Lagerplätze | ja | – |
|
||||
| StRS-060 | Elektronischer Belegaustausch mit Distributoren | ja | – |
|
||||
| StRS-061 | Vergleich von Einkaufspreisen über mehrere externe Preisquellen | ja | – |
|
||||
| StRS-063 | Artikelimport aus Lieferanten- und Katalogdaten | ja | – |
|
||||
| StRS-065 | Abgestufte Ticketsichtbarkeit für Mitarbeiter und Kundenkontakte | ja | – |
|
||||
| StRS-066 | Zeiterfassung auf Tickets als Grundlage der Leistungsabrechnung | ja | – |
|
||||
| StRS-067 | Schutz erfasster Zeiten vor unberechtigter Änderung und Löschung | ja | – |
|
||||
| StRS-068 | Fälligkeitsberechnung aus der Ticketpriorität unter Berücksichtigung von Geschäftszeiten | ja | – |
|
||||
| StRS-074 | Kundenformulare zur strukturierten Datenerhebung | ja | – |
|
||||
| StRS-077 | KI-Unterstützung bei Ticketbearbeitung und Angebotserstellung | ja | – |
|
||||
| StRS-078 | Mahnwesen mit drei Mahnstufen | ja | – |
|
||||
| StRS-079 | Mahnvorschau und Zurücksetzen eines Mahnlaufs | ja | – |
|
||||
| StRS-080 | Offene-Posten-Auswertung und Zahlungseingang | ja | – |
|
||||
| StRS-081 | SEPA-Zahlungsverkehr mit Lastschrift und Überweisung | ja | – |
|
||||
| StRS-083 | Belegtransfer an DATEV Unternehmen online | ja | – |
|
||||
| StRS-085 | Kostenstellen und Kostenträger | ja | – |
|
||||
| StRS-087 | Produktionsaufträge mit Positionen und Protokoll | ja | – |
|
||||
| StRS-089 | Auslastung und Leistungsnachweise von Mitarbeitern | ja | – |
|
||||
| StRS-093 | Berichtswesen mit zentral verwalteten Berichtsvorlagen | ja | – |
|
||||
| StRS-094 | Zeitgesteuerte Berichtserstellung und -verteilung über den Reportserver | ja | – |
|
||||
| StRS-097 | Massenänderung von Beleg-, Artikel- und Kontendaten | ja | – |
|
||||
| StRS-098 | Kundenindividuelle Zusatzfelder ohne Codeänderung | ja | – |
|
||||
| StRS-103 | Direkter Datenbankzugriff für Administratoren | ja | – |
|
||||
| StRS-104 | Automatisierte Hintergrundverarbeitung mit zentraler Steuerung | ja | – |
|
||||
| StRS-105 | Nutzungserfassung für Abrechnung und Produktsteuerung | ja | – |
|
||||
| StRS-106 | Wahlweiser Betrieb des Windows-Clients mit direktem Datenbankzugriff oder über den Webservice | ja | – |
|
||||
| StRS-107 | Installation und Aktualisierung des Windows-Clients | ja | – |
|
||||
| StRS-115 | Kundenbestellung über den WebCart | ja | – |
|
||||
| StRS-117 | Digitale Bestätigung und Unterzeichnung von Dokumenten | ja | – |
|
||||
| StRS-119 | Outlook-Add-In für Ticket- und Belegzugriff aus der E-Mail heraus | ja | – |
|
||||
| StRS-122 | Ressourcenorientierte REST-API als Nachfolgeschnittstelle | ja | – |
|
||||
| StRS-124 | Anbindung weiterer Fremdsysteme des Systemhausgeschäfts | ja | – |
|
||||
| StRS-125 | Automatisierte Qualitätssicherung vor der Auslieferung | ja | – |
|
||||
| StRS-126 | Verwaltung von Softwarelizenzen des Kunden (Produkt-Lifecycle) | ja | – |
|
||||
| StRS-131 | Terminanfragen mit Terminvorschlägen | ja | – |
|
||||
| StRS-140 | Reisekostenabrechnung | ja | – |
|
||||
| StRS-148 | Aufbewahrungsfristen und Unveränderbarkeit steuerlich relevanter Belege | ja | `[HYPOTHESE]` |
|
||||
| SyRS-001 | Mandantenbezogene Stammdaten für Ausgangsdokumente und Zahlungsverkehr | ja | – |
|
||||
| SyRS-005 | Anmeldevorgang mit Ticketausgabe | ja | – |
|
||||
| SyRS-006 | Prüfkette der Kontogültigkeit bei jeder Anmeldung | ja | – |
|
||||
| SyRS-007 | Kennwortspeicherung mit ungesalzenem SHA-1-Hash | ja | – |
|
||||
| SyRS-008 | Zweitfaktorverfahren RADIUS und E-Mail-Bestätigungslink | ja | – |
|
||||
| SyRS-009 | Auswahl des Authentifizierungsverfahrens mit Rückfallweg | ja | – |
|
||||
| SyRS-010 | Hierarchisches Rechtemodell mit numerischen Rechtekennungen | ja | – |
|
||||
| SyRS-011 | Rechteprüfung an drei unabhängigen Durchsetzungspunkten | ja | – |
|
||||
| SyRS-012 | Serverseitige Durchsetzung einschränkender Sichtrechte als Pflichtfilter | ja | – |
|
||||
| SyRS-013 | Lizenzprüfung mit Anzahl, Ablaufdatum und Ablaufversion bei der Ticketvergabe | ja | – |
|
||||
| SyRS-014 | Lizenzabhängige Bereitstellung von Modulen und Einstellungsseiten | ja | – |
|
||||
| SyRS-015 | Zugangstoken als gleichwertiges Authentifizierungsmittel der Schnittstelle | ja | – |
|
||||
| SyRS-016 | Getrenntes Rechtemodell für Webaccounts | ja | – |
|
||||
| SyRS-017 | Authentifizierungspflicht aller zustandsändernden Schnittstellenmethoden | ja | – |
|
||||
| SyRS-018 | Attributgesteuerte Änderungsverfolgung über die Persistenzschicht | ja | – |
|
||||
| SyRS-020 | Zugriffsschutz und Protokollierung im Passwort-Manager | ja | – |
|
||||
| SyRS-021 | Symmetrische Verschlüsselung mit ableitbarem Standardschlüssel | ja | – |
|
||||
| SyRS-022 | Ticketgültigkeit, Verlängerung und Bereinigung | ja | – |
|
||||
| SyRS-023 | Protokollierung der Anmeldeherkunft | ja | – |
|
||||
| SyRS-024 | Fehlerbehandlung ohne Preisgabe interner Details in der Schnittstelle | ja | – |
|
||||
| SyRS-025 | Zusätzliche Beschränkung auf gehostete Umgebungen | ja | – |
|
||||
| SyRS-026 | Schutz vor offener Weiterleitung im Anmeldeweg des Portals | ja | – |
|
||||
| SyRS-032 | Seitenweiser Zugriff auf große Ergebnismengen | ja | – |
|
||||
| SyRS-035 | Audits mit Fragenkategorien und Freigabeprozess | ja | – |
|
||||
| SyRS-036 | Mehrstufige Preisfindung für Belegpositionen | ja | – |
|
||||
| SyRS-037 | Geräteidentität über Seriennummer, Barcode und freie Inventarnummer | ja | – |
|
||||
| SyRS-038 | Länder-, Regions- und Währungsstammdaten als Grundlage steuerlicher und logistischer Regeln | ja | – |
|
||||
| SyRS-042 | Belegartspezifische Bearbeitungs- und Sichtrechte | ja | – |
|
||||
| SyRS-046 | Belegartbezogene Gültigkeit und Fälligkeitsregeln der Zahlungsbedingungen | ja | – |
|
||||
| SyRS-047 | Datumsabhängige Ermittlung des Steuersatzes über eine Satzkette | ja | – |
|
||||
| SyRS-048 | Führung von Belegwerten in Beleg- und Hauswährung | ja | – |
|
||||
| SyRS-050 | Provisionsermittlung über Schema, Staffel, Ziel und Kundenzuordnung | ja | – |
|
||||
| SyRS-051 | Anzahlungsrechnungen mit Variablentexten und Verrechnung in der Schlussrechnung | ja | – |
|
||||
| SyRS-053 | Erzeugung der E-Rechnung als eigenständiges XML und als eingebettetes PDF | ja | – |
|
||||
| SyRS-054 | Zustandsgesicherte Übergänge im Warenkorb-Freigabewesen | ja | – |
|
||||
| SyRS-056 | Typisierte Belegpositionen mit Sichtbarkeits- und Gruppierungssteuerung | ja | – |
|
||||
| SyRS-057 | Mehrstufige Belegsuche über Sichten und benannte Abfragen | ja | – |
|
||||
| SyRS-058 | Belegexport nach Excel mit konfigurierbaren Einstellungen | ja | – |
|
||||
| SyRS-070 | Vertragsmodell mit Laufzeit-, Abrechnungs- und Kontingentsteuerung | ja | – |
|
||||
| SyRS-071 | Abrechnungslauf mit Vertragsauswahl, Rechnungserzeugung, Versand und Ergebnisprotokoll | ja | – |
|
||||
| SyRS-072 | Zerlegung eines Abrechnungszeitraums in Teilperioden | ja | – |
|
||||
| SyRS-073 | Kontingentverbrauch, Restwert und Ausgleichsartikel | ja | – |
|
||||
| SyRS-074 | Zählerstände mit Historie, Freimengen, Staffelpreisen und Begründungspflicht | ja | – |
|
||||
| SyRS-075 | Abbruch der Rechnungserzeugung bei nicht erreichbarem Mengenlieferanten | ja | – |
|
||||
| SyRS-077 | Pauschalabrechnung unabhängig von den erfassten Einzelleistungen | ja | – |
|
||||
| SyRS-078 | MSP-Auswertung mit Historie und Überführung in Vertragspositionen | ja | – |
|
||||
| SyRS-080 | Artikelmodell mit Einheiten, Staffelpreisen, Varianten und Protokoll | ja | – |
|
||||
| SyRS-081 | Warengruppe als Träger steuerlicher und buchhalterischer Vorgaben | ja | – |
|
||||
| SyRS-082 | Bestandsbuchungen mit Rechteprüfung, Wertfortschreibung und Protokoll | ja | – |
|
||||
| SyRS-087 | EDI-Verarbeitung mit formatabhängigem Zerteilen und Protokollierung | ja | – |
|
||||
| SyRS-088 | Preisspiegel mit Gültigkeitsfilter und Zwischenspeicher | ja | – |
|
||||
| SyRS-090 | Zeitgesteuerter Artikelimport mit Abgleich gegen den Bestand | ja | – |
|
||||
| SyRS-100 | Ticketmodell mit Pflichtfeldprüfung, Präfix und Feldlängenschutz | ja | – |
|
||||
| SyRS-103 | Abgestufte Rechteprüfung bei Änderung und Löschung erfasster Zeiten | ja | – |
|
||||
| SyRS-104 | Fälligkeitsberechnung mit Geschäftszeiten- und Wochenendübertrag | ja | – |
|
||||
| SyRS-110 | Formulare mit Feldern, Auslösern, Aktionen und Zuständen | ja | – |
|
||||
| SyRS-113 | KI-Anbindung mit Modellkatalog, Zugangsprüfung und Nutzungserfassung | ja | – |
|
||||
| SyRS-120 | Mahnlauf mit Vorschau, Rechteprüfung, Stufenfortschreibung und Rücknahme | ja | – |
|
||||
| SyRS-121 | Offene-Posten-Lauf und Zahlungseingangserfassung | ja | – |
|
||||
| SyRS-122 | Transaktionsgesicherter SEPA-Export mit Kennzeichnung und Protokoll | ja | – |
|
||||
| SyRS-130 | Produktionsauftrag mit Positionen, Protokoll und Portalzugriff | ja | – |
|
||||
| SyRS-132 | Tagesplanung mit Stapelverarbeitung, Import und Tagesabschluss | ja | – |
|
||||
| SyRS-134 | Anrufdatenerfassung über TAPI und Microsoft Graph mit Rufnummernauflösung | ja | – |
|
||||
| SyRS-140 | Berichtssystem mit Gruppen, Parametern und fachspezifischen Erzeugern | ja | – |
|
||||
| SyRS-142 | Volltextindex mit Anforderungssteuerung und Vollaufbau | ja | – |
|
||||
| SyRS-143 | Massenänderung mit Vorlage, Trefferanzeige und getrennten Läufen | ja | – |
|
||||
| SyRS-144 | Frei definierbare Zusatzfelder mit typisierten Werten | ja | – |
|
||||
| SyRS-145 | Ressourcenbasierte Lokalisierung je Baustein | ja | – |
|
||||
| SyRS-148 | Skriptmaschine mit Einmalausführung, Reihenfolge und wiederkehrenden Skripten | ja | – |
|
||||
| SyRS-149 | Abfragewerkzeug mit administrativem Rechteschutz | ja | – |
|
||||
| SyRS-160 | Einheitlicher Datenzugriff des Windows-Clients über austauschbare Umsetzungen | ja | – |
|
||||
| SyRS-161 | Signierte Auslieferungspakete mit abgeleiteter Versionsnummer | ja | – |
|
||||
| SyRS-163 | Verbindungs- und Umgebungsverwaltung mit Prüfwerkzeugen | ja | – |
|
||||
| SyRS-167 | Webportal als serverseitig gerenderte Anwendung mit Sitzungsüberwachung | ja | – |
|
||||
| SyRS-168 | Getrennte Anmeldewege und Startseiten für Mitarbeiter, Kunden und Outlook | ja | – |
|
||||
| SyRS-169 | Warenkorb mit Lizenz-, Zugriffs- und Zustandsprüfung je Operation | ja | – |
|
||||
| SyRS-171 | Tokenbasierter Dokumentzugriff mit Bestätigung, Ablehnung und Unterschrift | ja | – |
|
||||
| SyRS-172 | Outlook-Aufgabenbereich mit Office-Anmeldung und E-Mail-Kontext | ja | – |
|
||||
| SyRS-174 | Einheitliches Anfrage- und Antwortformat der Legacy-Schnittstelle | ja | – |
|
||||
| SyRS-177 | Anbindung von Fremdsystemen über je eigene Konfiguration und Lizenz | ja | – |
|
||||
| SyRS-178 | Mehrstufige automatisierte Prüfung vor der Aufnahme einer Änderung | ja | – |
|
||||
| SyRS-185 | Gesicherte Übertragung zwischen den Systembestandteilen | ja | `[HYPOTHESE]` |
|
||||
| SyRS-186 | Trennung der Mandanten auf Datenhaltungsebene | ja | `[HYPOTHESE]` |
|
||||
| SyRS-187 | Anbindung des Lizenzservers | ja | `[HYPOTHESE]` |
|
||||
| SyRS-189 | Begrenzung der Aufrufhäufigkeit an der Schnittstelle | ja | `[HYPOTHESE]` |
|
||||
| SyRS-190 | Kennwortrichtlinien für Benutzer- und Portalkonten | ja | `[HYPOTHESE]` |
|
||||
| SyRS-191 | Wirksamkeit eines Rechteentzugs auf laufende Sitzungen | ja | `[HYPOTHESE]` |
|
||||
| SyRS-193 | Archivierung von Belegdokumenten | ja | `[HYPOTHESE]` |
|
||||
| SyRS-195 | Berechtigung zeitgesteuert erzeugter Berichte | ja | `[HYPOTHESE]` |
|
||||
| SwRS-008 | Sitzungsverwaltung mit Fachlogikzugriff und Transaktionssteuerung | ja | – |
|
||||
| SwRS-009 | Generische und spezialisierte Datenzugriffsobjekte | ja | – |
|
||||
| SwRS-010 | Authentifizierungsklassen als Vererbungshierarchie mit gemeinsamem Ablauf | ja | – |
|
||||
| SwRS-013 | Verfahrensauswahl mit Rückfall- und Fehlschlagbaustein | ja | – |
|
||||
| SwRS-015 | Anmeldekontext als gemeinsames Objekt für Benutzer, Webaccount und Zugangstoken | ja | – |
|
||||
| SwRS-016 | Anwendungsarten als typisierte Beschreibung anmeldefähiger Produkte | ja | – |
|
||||
| SwRS-017 | Interceptorkette mit fester Reihenfolge an der Schnittstelle | ja | – |
|
||||
| SwRS-018 | Zwischenspeicher für Rechte, Einstellungen und Stammdaten im Client | ja | – |
|
||||
| SwRS-019 | Produktmerkmale als schaltbare Fähigkeitskennzeichen | ja | – |
|
||||
| SwRS-020 | Rechteprüfung als Sammelabfrage mit Ergebnisliste | ja | – |
|
||||
| SwRS-021 | Auswertung der Ticketsichtrechte in der Geschäftslogik | ja | – |
|
||||
| SwRS-022 | Aufbau des Pflichtfilters für Ticketlisten im Portal | ja | – |
|
||||
| SwRS-023 | Lizenzverwaltung als prozessweiter Dienst mit Mengen- und Fristprüfung | ja | – |
|
||||
| SwRS-024 | Zugangstoken als Entität mit Hash, Gültigkeit und Protokoll | ja | – |
|
||||
| SwRS-026 | Auswertbare Rechteausdrücke für die Modulregistrierung | ja | – |
|
||||
| SwRS-027 | Autorisierungsattribute der modernen Schnittstelle | ja | – |
|
||||
| SwRS-028 | Anspruchsverwaltung und Autorisierungsbausteine des Portals | ja | – |
|
||||
| SwRS-033 | Datenmodell des Passwort-Managers auf Basis benutzerdefinierter Eigenschaften | ja | – |
|
||||
| SwRS-034 | Symmetrische Verschlüsselung mit Schlüsselableitung aus einem Hash | ja | – |
|
||||
| SwRS-038 | Benannte Abfragen und roher SQL-Zugriff als geregelte Ausnahme | ja | – |
|
||||
| SwRS-043 | Preisquellen als getrennte Entitäten mit eigenem Gültigkeitszeitraum | ja | – |
|
||||
| SwRS-044 | Bankverbindung, Mandat und Zahlungsprotokoll als verbundene Entitäten | ja | – |
|
||||
| SwRS-046 | Kundengeräte als schreibbare Entität mit Adressen, Ticketbezug und Protokoll | ja | – |
|
||||
| SwRS-053 | Rechteprüfung des Belegwesens als private, vor jedem Schreibvorgang aufgerufene Methode | ja | – |
|
||||
| SwRS-057 | Steuerkomponente mit Satzkette, Ersatzsatz und Fortschreibung | ja | – |
|
||||
| SwRS-059 | Provisionskomponenten je Modellbestandteil | ja | – |
|
||||
| SwRS-060 | Belegausgabe mit Layoutelementen und belegartspezifischen Erzeugern | ja | – |
|
||||
| SwRS-061 | Erzeugung der E-Rechnung mit formatabhängiger Knotenbildung | ja | – |
|
||||
| SwRS-062 | Freigabewesen als eigene Komponente mit Zustandsübergängen und Benachrichtigung | ja | – |
|
||||
| SwRS-065 | Belegverkettung und Fortschrittsermittlung | ja | – |
|
||||
| SwRS-066 | Frachtartikel mit kunden- und wertabhängiger Berechnung | ja | – |
|
||||
| SwRS-068 | Belegklassifikationen und Empfängerangaben | ja | – |
|
||||
| SwRS-070 | Vertragsentität mit Verweisen auf Abrechnungs-, Kontingent- und Zahlungsobjekte | ja | – |
|
||||
| SwRS-071 | Abrechnungskomponente als partielle Klasse mit getrennten Zuständigkeiten | ja | – |
|
||||
| SwRS-073 | Kontingentänderungen als einzelne Protokolleinträge | ja | – |
|
||||
| SwRS-075 | Anbindung des RMM-Systems über eine eigene Verbindungskomponente | ja | – |
|
||||
| SwRS-076 | Vereinfachte Ticketabrechnung als eigene Komponente | ja | – |
|
||||
| SwRS-077 | Artikelreferenzen mit eigener Berechnungsvorschrift | ja | – |
|
||||
| SwRS-079 | Vertragskomponenten für Laufzeitfortschreibung und Abschluss | ja | – |
|
||||
| SwRS-083 | Aktionspreise mit Gültigkeit, Herkunft und Bearbeiterkennung | ja | – |
|
||||
| SwRS-086 | Externe Artikeldaten je Distributor als eigene Komponente | ja | – |
|
||||
| SwRS-087 | Mengeneinheiten mit Umrechnung als eigene Hilfskomponente | ja | – |
|
||||
| SwRS-101 | Zeitkomponente mit Zuschlagsberechnung, Kalenderkopplung und KI-Bewertung | ja | – |
|
||||
| SwRS-102 | Rechteprüfung der Zeitbearbeitung mit Ausnahmen statt Ergebnisobjekt | ja | – |
|
||||
| SwRS-103 | Fälligkeitsberechnung als Schleife über Reststunden | ja | – |
|
||||
| SwRS-106 | Formularkomponente mit sechs Objektarten und gleichförmigem Zugriff | ja | – |
|
||||
| SwRS-110 | Mahnlaufkomponente mit getrennten Erzeugungsschritten | ja | – |
|
||||
| SwRS-111 | Zahlungsverkehrskomponente mit Formatabstraktion und Bankauswahl | ja | – |
|
||||
| SwRS-112 | Offene-Posten-Komponente mit gemeinsamer Berichtsanbindung | ja | – |
|
||||
| SwRS-113 | Zahlungseingangskomponente mit Protokollnummernvergabe | ja | – |
|
||||
| SwRS-114 | Belegabstraktion für Buchhaltungsexport und E-Rechnung | ja | – |
|
||||
| SwRS-115 | Erzeugung der Zahlungsdatei nach amtlichem Schema | ja | – |
|
||||
| SwRS-122 | Basisklasse der Hintergrunddienste mit Vorlagenmethoden | ja | – |
|
||||
| SwRS-128 | Konfigurationsdatenbank mit wählbarer Schlüsselablage | ja | – |
|
||||
| SwRS-130 | Dreiteilige Zugriffsschicht des Windows-Clients je Fachbereich | ja | – |
|
||||
| SwRS-134 | Anmeldebausteine des Portals mit Zwischenschema und sicherer Rücksprungadresse | ja | – |
|
||||
| SwRS-136 | Variablenersetzung mit fachspezifischen Zulieferern | ja | – |
|
||||
| SwRS-138 | Outlook-Add-In als eigenes Projekt mit Office-Anbindung | ja | – |
|
||||
| SwRS-139 | Gemeinsame Steuerelementbibliothek für Client und Vorschau | ja | – |
|
||||
| SwRS-144 | Testlandschaft mit neun Projekten und Prüfinfrastruktur | ja | – |
|
||||
| SwRS-147 | Testabdeckung der Fachlogik | ja | `[HYPOTHESE]` |
|
||||
| SwRS-153 | Wirkung des Rechtezwischenspeichers auf sicherheitsrelevante Entscheidungen | ja | `[HYPOTHESE]` |
|
||||
| SwRS-155 | Abgrenzung des Nexus-Portals zur Legacy-Schnittstelle | ja | `[HYPOTHESE]` |
|
||||
|
||||
### 5.8 Abgleich `Hypothesen.md` gegen die Inline-Markierungen
|
||||
|
||||
| Prüfung | Ergebnis |
|
||||
|---------|----------|
|
||||
| Anforderungen mit Inline-Markierung `[HYPOTHESE]` | 36 |
|
||||
| Anforderungen mit `Status: HYPOTHESE` | 36 |
|
||||
| In `Hypothesen.md` aufgeführte IDs | 36 |
|
||||
| Symmetrische Differenz zwischen den drei Mengen | **leer** |
|
||||
| Freie Fragen in `Hypothesen.md` ohne zugehörige Anforderung | **0** |
|
||||
|
||||
Die drei Mengen sind deckungsgleich. `Hypothesen.md` enthält genau die 36 Anforderungen mit Inline-Markierung und keine zusätzlichen freien Fragen; offene Punkte ohne zugehörige Anforderung stehen in Abschnitt 7 dieses Berichts.
|
||||
|
||||
Verteilung der 36 Hypothesen: 11 StRS, 17 SyRS, 8 SwRS. Sie fallen in drei Gruppen:
|
||||
|
||||
1. **Betriebsverhalten ohne Artefakt im Bestand** (Verfügbarkeit, Datensicherung, Aufbewahrungsfristen, Mengengerüst, Antwortzeiten, Archivierung, Übertragungsverschlüsselung, Mandantentrennung auf Datenhaltungsebene). Diese Angaben liegen außerhalb des Quellbestands; sie sind nur durch Auskunft des Betreibers zu schließen.
|
||||
2. **Fehlende Gegenstelle** (Lizenzserver, externe Ticketplattformen, RMM-Systeme, mobile Verbraucher). Die aufrufende Seite ist im Bestand, die aufgerufene nicht.
|
||||
3. **Bereiche, deren Umfang nicht zur Zahl ihrer Fachklassen passt** – insbesondere StRS-137: 221 Tabellen mit Präfix `AssetManagement` stehen drei Fachklassen gegenüber. Hier ist offen, ob der Bereich vollständig genutzt, teilweise stillgelegt oder von einem anderen Erzeuger befüllt wird.
|
||||
|
||||
Ein Anteil von 8,1 % Hypothesen bei 446 Anforderungen ist für eine Codebasis dieses Umfangs plausibel und ausdrücklich kein Mangel: Er markiert die Grenze zwischen dem, was der Quellbestand trägt, und dem, was Fachexperten beantworten müssen.
|
||||
|
||||
---
|
||||
|
||||
## 6 Selbstbewertung
|
||||
|
||||
### 6.1 Abdeckung in absoluten Zahlen
|
||||
|
||||
| Frage | Antwort |
|
||||
|-------|---------|
|
||||
| Wie viele Inventarmodule wurden **tief** analysiert? | **12** von 176 (6,8 %) |
|
||||
| Wie viele **mittel**? | **67** (38,1 %) |
|
||||
| Wie viele **flach**? | **77** (43,8 %) |
|
||||
| Wie viele **nicht analysiert**? | **20** (11,4 %) |
|
||||
| Wurde die Mindestabdeckung aus Schritt 0b erreicht? | **Nicht vollständig.** 156 von 176 Zeilen (88,6 %) tragen mindestens eine belegte Anforderung; für die verbleibenden 20 ist je Zeile ein Grund angegeben. Eine Zeile ohne Anforderung und ohne Grund existiert nicht. |
|
||||
|
||||
Die 20 nicht analysierten Zeilen (M157 bis M176) verteilen sich auf vier Ursachen:
|
||||
|
||||
| Ursache | Zeilen | Beispiele |
|
||||
|---------|--------|-----------|
|
||||
| Rein technische Hilfsschicht ohne eigenständige fachliche Aussage | 5 | M164 Systemtabellen, M166 Werkzeugsammlung, M172 Oberflächen-Hilfsbereiche, M174 Versionsauskunft, M171 Suchdialoge |
|
||||
| Abgrenzung zu einem bereits erfassten Modul im Zeitrahmen nicht auflösbar | 6 | M161 Nexus-Office gegen M109, M167 Lieferantensuche gegen M014/M051, M173 Ticketsichten gegen M135, M176 Lieferantenverträge gegen M038 |
|
||||
| Kein Aufrufer, keine Gegenstelle oder keine Konfiguration im Bestand auffindbar | 5 | M157 WebSuite, M159 TANSS, M162 Nexoware-Erweiterungen, M169 Kalkulation je Filiale, M158 Portalzugriffsverwaltung |
|
||||
| Im Zeitrahmen nicht gelesen; Aussage wäre nicht belegbar gewesen | 4 | M163 Transaktionsklammer, M165 Startlogik, M170 Datenimport/-export, M175 Bauskripte |
|
||||
|
||||
Die vierte Gruppe ist die einzige, in der eine Folgeiteration mit demselben Werkzeugsatz unmittelbar Ertrag bringen würde; die übrigen drei erfordern entweder eine Auskunft des Herstellers oder sind fachlich ohne Ertrag.
|
||||
|
||||
### 6.2 Wo die Belege dünn sind
|
||||
|
||||
| Befund | Zahlen |
|
||||
|--------|--------|
|
||||
| Anforderungen ohne `PRIMÄR`-Beleg | 8 (1,8 %) – alle als `[HYPOTHESE]` gekennzeichnet |
|
||||
| Anforderungen mit genau einem Beleg | 4 (0,9 %) – StRS-021, StRS-139, StRS-142, StRS-147 |
|
||||
| Belegverteilung | 1 Beleg: 4 · 2 Belege: 76 · 3 Belege: 365 · 4 Belege: 1 |
|
||||
| Module der Einstufung `flach` | 77 – sie tragen 120 Anforderungen, im Mittel 1,6 je Modul |
|
||||
| Bereich mit dem größten Missverhältnis von Umfang zu Beleg | M129 Asset-Management: 221 Tabellen, 1 Anforderung (StRS-137, `[HYPOTHESE]`) |
|
||||
|
||||
Drei Themenfelder sind durchgehend schwach belegt:
|
||||
|
||||
- **Betrieb.** Verfügbarkeit, Datensicherung, Wiederherstellung, Aufbewahrungsfristen, Mengengerüst und Antwortzeiten (M138) stützen sich ausschließlich auf indirekte Artefakte – Containerdefinitionen, Protokollkonfiguration, Skriptsystem. Für ein Zielsystem sind das die Angaben, die zuerst vom Betreiber beizubringen sind.
|
||||
- **Asset-Management und IT-Dokumentation.** Der größte Einzelbereich der Datenbank ist mit einer Hypothese abgedeckt. Hier ist die Diskrepanz zwischen Datenmodellumfang und Fachlogik im Bestand so groß, dass eine Aussage ohne Fachauskunft nicht verantwortbar war.
|
||||
- **Fremdsystemanbindungen.** M116 fasst sieben Anbindungen in einer Zeile zusammen; je Anbindung liegt höchstens ein Beleg vor. Die Formate und Protokolle der Gegenstellen sind aus dem Bestand nicht rekonstruierbar.
|
||||
|
||||
### 6.3 Sind Hypothesen aufgehoben worden?
|
||||
|
||||
Ja – 36 Anforderungen sind als `[HYPOTHESE]` gekennzeichnet und in `Hypothesen.md` mit ihrer offenen Frage geführt. Eine gesonderte Begründung nach der Vorgabe "wenn keine Hypothese gehalten wurde" entfällt damit.
|
||||
|
||||
### 6.4 Was der Lauf über die eigene Verlässlichkeit sagt
|
||||
|
||||
Zehn Zwischenstände waren falsch und wurden durch Nachzählung berichtigt (Abschnitt 5.5). Drei Beobachtungen daraus:
|
||||
|
||||
1. **Zahlenangaben aus dem Gedächtnis sind unzuverlässig.** Sieben der zehn Fehler waren Zählfehler, einer davon um den Faktor 13 (17 statt 221 Tabellen). Jede quantitative Angabe im Ergebnisbestand ist deshalb einzeln nachgezählt worden.
|
||||
2. **Mitgelieferte Dokumentation ist ein `SEKUNDÄR`-Beleg, kein `PRIMÄR`-Beleg.** Die Dokumentation unter `docs/` beschreibt eine Methode zur Belegstornierung, die im Code nicht existiert. Die Belegklassifikation hat diesen Fall aufgefangen – hätte sie Dokumentation als gleichwertig behandelt, wäre eine nicht existierende Funktion als belegte Anforderung im Bestand.
|
||||
3. **Werkzeugfehler sehen aus wie Befunde.** Die erste Auswertung der ungeschützten Schnittstellenoperationen las das Attribut nur über zwei Zeilen und meldete geschützte Operationen als ungeschützt. Der Befund wurde erst nach Umbau der Auswertung auf den vollständigen Operationsblock übernommen. Sicherheitsaussagen aus maschineller Auswertung brauchen eine Gegenprobe an Einzelfällen.
|
||||
|
||||
### 6.5 Erfüllung der Vorgaben aus der Aufgabenstellung
|
||||
|
||||
| Vorgabe | Erfüllung |
|
||||
|---------|-----------|
|
||||
| Modulinventar vor der ersten Anforderung | erfüllt – Abschnitt 3, 176 Zeilen |
|
||||
| Mindestabdeckung je Inventarzeile | 156 Zeilen mit Anforderung, 20 mit Begründung; keine Zeile ohne beides |
|
||||
| Vertiefung nach Risiko | erfüllt – 7 der 12 tief eingestuften Zeilen betreffen unmittelbar Sicherheit, Abrechnung oder Rechte (M003, M004, M007, M013, M023, M039, M096); die übrigen fünf sind Kontenmodell, Qualitätssicherung, Betriebszusagen, Altsystemabgrenzung und Datenzugriffsschicht |
|
||||
| Belegpflicht je Anforderung | erfüllt – 0 Anforderungen ohne Beleg |
|
||||
| Trennung `Fakt` / `Aussage` | erfüllt – beide Felder in allen 446 Blöcken besetzt |
|
||||
| `PRIMÄR`-Beleg für risikorelevante Anforderungen | erfüllt – 227 von 227 |
|
||||
| Hypothesenmarkierung mit Begründung | erfüllt – 36, deckungsgleich mit `Hypothesen.md` |
|
||||
| Verifizierbarkeit (`Prüfidee`) | erfüllt – 0 Anforderungen ohne Prüfidee |
|
||||
| `Übernahmewürdigkeit` je Anforderung | erfüllt – 0 ohne Angabe |
|
||||
| Trennung `Status` (Belegsituation) / `Übernahmewürdigkeit` (fachliche Zukunft) | erfüllt – die Felder sind unabhängig belegt: 32 Anforderungen tragen `Status: belegt` bei `Übernahmewürdigkeit: veraltet`, `Workaround` oder `Sonderfall`, und 33 tragen `Status: HYPOTHESE` bei `Übernahmewürdigkeit: übernehmen` |
|
||||
| Qualitätsmerkmal nach ISO/IEC 25010 im eigenen Feld | erfüllt nach Korrektur – siehe Abschnitt 5.4 |
|
||||
| Vorwärts- und Rückwärts-Traceability | erfüllt – 155/155 SyRS→StRS, 141/141 SwRS→SyRS, 0 nicht auflösbare Ziele; Lücke bei 19 StRS ohne Verfeinerung |
|
||||
| Konsolidierungsprüfung je Anforderung | erfüllt – 141 Kandidaten benannt, keine ebenenübergreifenden Paare fälschlich als Konsolidierungsfall geführt |
|
||||
| Keine Codeerzeugung | erfüllt – es sind ausschließlich Spezifikationsartefakte entstanden |
|
||||
| Codebasis unverändert | erfüllt – auf das Arbeitsverzeichnis wurde ausschließlich lesend zugegriffen |
|
||||
| Keine Annahme über nicht beigestellte Hilfsmittel | erfüllt – Datenbank, laufendes System, Änderungshistorie und Ticketsystem standen nicht zur Verfügung und wurden nicht vorausgesetzt |
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 7 Bekannte Lücken
|
||||
|
||||
Die folgenden Lücken sind bekannt und bewusst offengelassen. Sie sind hier vollständig aufgeführt, damit sie bei der Verwendung des Anforderungsbestands nicht als Vollständigkeit missverstanden werden.
|
||||
|
||||
**L1 – 19 StRS-Anforderungen ohne Verfeinerung.** StRS-126 bis StRS-136 und StRS-138 bis StRS-145 sind auf Stakeholderebene belegt, aber nicht auf Systemebene verfeinert. Betroffen sind Produkt-Lifecycle, Produktmatrix, Qualitätsmanagement, Dashboard, Todo-Liste, Terminanfragen, Kurzverweise, Videoportal, Chats, Schlagworte, Prozesse, Handelsplattform, Gutscheine, Reisekosten, externe Ticketsystemanbindung, Dokumentensynchronisation, Rasteranpassung, soziale Netzwerke und Abteilungen. Für eine Reimplementierung heißt das: Der fachliche Zweck ist bekannt, das geforderte Systemverhalten nicht.
|
||||
|
||||
**L2 – 20 nicht analysierte Inventarzeilen.** Abschnitt 6.1 nennt sie einzeln mit Grund. Vier davon (M163, M165, M170, M175) wären mit demselben Werkzeugsatz in einer Folgeiteration erschließbar.
|
||||
|
||||
**L3 – Betriebsverhalten nicht aus dem Bestand ableitbar.** Verfügbarkeit, Wartungsfenster, Datensicherung, Wiederherstellungszeiten, Aufbewahrungsfristen, Mengengerüst und Antwortzeiterwartungen sind nur als Hypothesen geführt (M138). Der Quellbestand enthält dazu keine Festlegung; die Angaben müssen vom Betreiber kommen.
|
||||
|
||||
**L4 – Asset-Management unterbelegt.** 221 Tabellen mit Präfix `AssetManagement` stehen drei Fachklassen (`DocuBoard`, `DocumentationArea`, `ItPlanner`) gegenüber und sind mit einer einzigen Anforderung abgedeckt (StRS-137, `[HYPOTHESE]`). Gemessen am Anteil am Datenmodell ist das die größte inhaltliche Lücke des Laufs.
|
||||
|
||||
**L5 – Keine Auswertung von Änderungshistorie, Tickets und Freigabemitteilungen.** Schritt 2 der Methodenkette sieht diese Quellen vor, soweit sie als Dateien lesbar sind. Im Arbeitsverzeichnis lagen sie nicht vor. Damit fehlt die zeitliche Dimension: Es ist nicht bestimmbar, welche Regeln aktuell gepflegt und welche seit Jahren unverändert sind. Das betrifft insbesondere die Einstufung `veraltet` – sie stützt sich ausschließlich auf Code-interne Merkmale (Kennzeichnung als überholt, auskommentierte Registrierung, Bezeichner wie `Old`, `Obsolate`).
|
||||
|
||||
**L6 – Gegenstellen externer Schnittstellen unbekannt.** Für Lizenzserver, RMM-Systeme, EDI-Distributoren, Paketdienstleister, Kontoinformationsdienst und externe Ticketplattformen liegt jeweils nur die aufrufende Seite vor. Formate, Fehlerfälle und Zusicherungen der Gegenstelle sind nicht spezifiziert.
|
||||
|
||||
**L7 – Keine dynamische Prüfung.** Alle Aussagen stammen aus statischer Betrachtung. Ob eine im Code vorhandene Prüfung zur Laufzeit tatsächlich greift – etwa weil sie über einen Konfigurationsschalter abgeschaltet oder durch einen anderen Pfad umgangen wird –, ist nicht belegt. Das betrifft besonders die 171 Schnittstellenoperationen ohne `[Authenticate]` (SyRS-017): Belegt ist das Fehlen des Attributs, nicht die tatsächliche Erreichbarkeit ohne Anmeldung.
|
||||
|
||||
**L8 – Fachliche Richtigkeit nicht validiert.** Schritt 7 der Methodenkette (Validierung mit Fachexperten) ist Teil des Verfahrens, aber nicht Teil dieses Laufs. Die 446 Anforderungen sind am Code belegt, nicht fachlich bestätigt. Wo Code und fachliche Absicht auseinanderfallen, bildet dieser Bestand den Code ab.
|
||||
|
||||
---
|
||||
|
||||
## 8 Befunde, die eine Folgeiteration nahelegen
|
||||
|
||||
Die folgenden Befunde sind im Lauf entstanden und rechtfertigen aus sich heraus eine weitere Iteration.
|
||||
|
||||
**B1 – Die Sicherheitsbefunde verdienen eine eigene Iteration.** Der Lauf hat vier Punkte gefunden, die für ein Zielsystem nicht übernommen werden können und deren Tragweite über die jeweilige Anforderung hinausgeht: die SHA-1-Kennwortspeicherung ohne Salz mit ausdrücklichem Hinweis im Quelltext (SyRS-007), den fest im Quelltext hinterlegten Verschlüsselungsschlüssel mit überlappendem Schlüssel- und Initialisierungsvektor (SwRS-029), 171 Schnittstellenoperationen ohne Authentifizierungsattribut (SyRS-017) und die fehlende Begrenzung der Aufrufhäufigkeit an anonym erreichbaren Endpunkten (SyRS-189). Eine gezielte Iteration sollte je Punkt den vollständigen Aufrufweg verfolgen und feststellen, welche Operationen tatsächlich ohne Anmeldung erreichbar sind.
|
||||
|
||||
**B2 – Die Konsolidierungsfälle sind der eigentliche Ertrag für die Reimplementierung.** 141 Anforderungen benennen einen Kandidaten; 17 Fälle betreffen tragende Geschäftsobjekte (Abschnitt 5.6). Eine Folgeiteration sollte diese Fälle nicht weiter suchen, sondern entscheiden: je Fall ein Zielkonzept, eine Migrationsregel und die Menge der betroffenen Anforderungen. Für den Gerätebestand (drei Datenhaltungen), das Belegwesen (drei Persistenzwege) und die Schnittstellen (zwei überlappende) ist das die Voraussetzung dafür, dass die Reimplementierung nicht die Doppelstrukturen des Altsystems übernimmt.
|
||||
|
||||
**B3 – Das Asset-Management muss aufgeklärt werden.** 221 Tabellen sind zu viel, um sie mit einer Hypothese abzudecken, und zu wenig belegt, um daraus Anforderungen abzuleiten. Zu klären ist, ob der Bereich produktiv genutzt wird, von welchem Erzeuger die Tabellen befüllt werden und ob er in das Zielsystem gehört. Die Antwort entscheidet über einen erheblichen Teil des Migrationsumfangs.
|
||||
|
||||
**B4 – Die 19 nicht verfeinerten StRS sind die günstigste Ausbaustufe.** Sie betreffen Module, deren Zweck bereits belegt ist; es fehlt jeweils die Systemebene. Eine Folgeiteration, die nur diese 19 Ketten schließt, hebt die Verfeinerungsquote von 87,3 % auf 100 %, ohne neue Analysebereiche zu öffnen.
|
||||
|
||||
**B5 – Die Belegsituation im Betrieb lässt sich nicht durch mehr Analyse verbessern.** L3 und L6 sind keine Fleißfrage. Eine Folgeiteration sollte hier nicht weiter suchen, sondern die 36 Hypothesen als Fragenkatalog an den Betreiber und die Fachbereiche geben. `Hypothesen.md` ist dafür bereits nach Dringlichkeit geordnet.
|
||||
|
||||
**B6 – Die Abweichung zwischen Dokumentation und Code ist ein wiederkehrendes Muster.** Der Fall der nicht existierenden Belegstornierungsmethode (Abschnitt 5.5) ist an einer Stelle nachgewiesen worden, weil dort geprüft wurde. Die 44 Dokumentationsdateien unter `docs/` sind im Lauf als Quelle genutzt, aber nicht systematisch gegen den Code abgeglichen worden. Eine Folgeiteration sollte diesen Abgleich vollständig führen; jede weitere gefundene Abweichung ist ein vermiedener Fehler in der Zielspezifikation.
|
||||
|
||||
---
|
||||
|
||||
## 9 Hinweise zur Verwendung
|
||||
|
||||
- `Status` beschreibt ausschließlich die Belegsituation (`belegt` oder `HYPOTHESE`), `Übernahmewürdigkeit` ausschließlich die fachliche Zukunft. Beide Felder sind unabhängig: Eine belegte Anforderung kann `veraltet` sein, eine Hypothese kann `übernehmen` tragen.
|
||||
- `Fakt` gibt wieder, was im Bestand steht. `Aussage` ist die daraus abgeleitete Sollaussage für das Zielsystem. Wo beide auseinanderfallen, ist das beabsichtigt und in `Übernahmewürdigkeit` begründet.
|
||||
- Die Belegklassifikation ist eine Vertrauensangabe: `PRIMÄR` bezeichnet eine im Code oder in der Datenbank durchgesetzte Regel, `SEKUNDÄR` und `KONTEXT` bezeichnen Hinweise. Eine Anforderung, die ausschließlich auf `SEKUNDÄR`- oder `KONTEXT`-Belegen steht, ist im vorliegenden Bestand ausnahmslos als `[HYPOTHESE]` gekennzeichnet.
|
||||
- Technische Bezeichner (Klassen, Methoden, Tabellen, Spalten) sind durchgängig in ihrer Originalsprache belassen, damit sie im Quellbestand auffindbar bleiben. Alle Anforderungsaussagen sind deutsch.
|
||||
+225
@@ -0,0 +1,225 @@
|
||||
# Glossar
|
||||
|
||||
**System:** c-entron ERP-Suite — Reverse Requirements Engineering
|
||||
**Stand:** 2026-08-26
|
||||
|
||||
Dieses Glossar erläutert die Domänenbegriffe, die in `StRS.md`, `SyRS.md` und `SwRS.md` verwendet werden. Jeder Eintrag nennt die Fundstelle, aus der die Bedeutung abgeleitet ist. Technische Bezeichner (Klassen, Methoden, Tabellen, Spalten) bleiben in ihrer Originalsprache.
|
||||
|
||||
## Hinweis auf zwei mehrdeutige Begriffe
|
||||
|
||||
Zwei Begriffe werden in der Codebasis in zwei verschiedenen Bedeutungen verwendet. In dieser Spezifikation sind sie stets durch einen Zusatz unterschieden:
|
||||
|
||||
| Begriff | Bedeutung A | Bedeutung B |
|
||||
|---|---|---|
|
||||
| **Ticket** | **Anmeldeticket**: Sitzungsmerkmal, das nach erfolgreicher Anmeldung ausgegeben wird (`Ticket`, `TicketBL`, `TicketRepository`) | **Servicevorgang**: Kundenanfrage im Helpdesk (`Helpdesk`, Tabelle `hlpdsk_requests`) |
|
||||
| **Asset** | **Beleg**: In der Altbenennung steht "Anlage"/"Asset" für einen Beleg (`AssetBL`, `AssetHeadDAO`, Tabelle `AnlageLog` mit `AnlageArt`) | **Gerät**: Im Bereich `AssetManagement` bezeichnet "Asset" ein überwachtes IT-Gerät (`AssetManagementDevices`) |
|
||||
|
||||
---
|
||||
|
||||
## A
|
||||
|
||||
**Abholschein** — Belegart, mit der ein Kunde Ware selbst abholt. Tabellen `AbholKopf`/`AbholPos`, Sicht `PickupLists`, Entität `ReceiptPickupList`, Nummernart `NumberGroupEnum.PickupList` (Beschreibung "Abholschein").
|
||||
|
||||
**Abrechnungsintervall** — Kombination aus Intervallart (`BillingIntervalKinds`: Tag, Monat, Quartal, Jahr) und einer Vielfachheit (`BillingIntervalDuration`) am Vertrag. "Quartal(e) mit Dauer 1" und "Monat(e) mit Dauer 3" ergeben dieselbe Periodenlänge (`AutomaticFacturaWebServiceBL.AddInterval`).
|
||||
|
||||
**ADM** — Außendienstmitarbeiter; am Konto als Betreuer geführt (`Account.Adviser1I3D` bis `Adviser6I3D`), am Vertrag als `SalesRepresentativeI3D`. Ein Wechsel des ADM kann die Filiale und damit den Nummernkreis eines Belegs ändern (Meldung in `ReceiptViewModel`).
|
||||
|
||||
**Aktionspreis** — Zeitlich begrenzter Sonderpreis eines Distributors oder Herstellers zu einem Artikel. Tabelle `HerstellerArtikAktionspreis`, Entität `ActionPrice` mit `GueltigAb`/`GueltigBis`; wird nur innerhalb des Gültigkeitszeitraums im Preisspiegel angezeigt.
|
||||
|
||||
**Änderungsschlüssel** — Guid je Beleg (`ReceiptBase.ConcurrencyControlGuid`, Datenbankspalte `GUI3D`), über den konkurrierende Änderungen erkannt werden. Weicht der übergebene vom gespeicherten Wert ab, bricht die Änderung mit dem Meldungscode `ChangedByOtherInstance` ab.
|
||||
|
||||
**Anlage** — siehe *Asset* (Bedeutung A) und *Beleg*.
|
||||
|
||||
**Anmeldeticket** — Zeichenkette, die nach erfolgreicher Anmeldung ausgegeben und bei jedem Schnittstellenaufruf mitgeführt wird. Gültig 30 Minuten (Standard), 5 Minuten (Monitoring-Konnektor) oder gemäß Einstellung; wird bei Verwendung verlängert (`TicketBL`).
|
||||
|
||||
**Anwendungsart** — Typisierte Beschreibung eines anmeldefähigen Produkts mit Lizenz-Guid, erforderlichem und ausschließendem Recht sowie Ticketablaufart (`ApplicationKind`).
|
||||
|
||||
**Anzahlungsrechnung** — Teilrechnung vor Leistungserbringung; wird in der Schlussrechnung verrechnet (`DownPaymentBL`, REST-Methoden `CreateDownPaymentInvoice` und `CreateFinalInvoiceWithDownPayments`).
|
||||
|
||||
**Artikelcode** — Sprechende Artikelnummer; einzige Nummernart, deren Eindeutigkeit über einen Zeichenkettenvergleich geprüft wird (`NumberGroupEnumExtensions.GetCompareAsStrings`).
|
||||
|
||||
**Asset** — siehe Hinweis oben. In dieser Spezifikation wird der Begriff vermieden; stattdessen wird von *Beleg* oder *Gerät* gesprochen.
|
||||
|
||||
## B
|
||||
|
||||
**Beleg** — Oberbegriff für Angebot, Auftrag, Lieferschein, Rechnung, Abholschein, Gutschrift und Vertrag sowie die entsprechenden Lieferantenbelegarten. Alle leiten von `ReceiptBase` ab und bestehen aus Kopf und Positionen.
|
||||
|
||||
**Belegkondition** — Zahlungs- und Lieferbedingung eines Belegs. Tabelle `Zahkond` mit Skontostaffel, Fälligkeitsregeln, Zahlungsartkennzeichen und je Belegart einem eigenen Gültigkeitskennzeichen (`GltAnge`, `GltAuf`, `GltRech` und weitere).
|
||||
|
||||
**Belegkette** — Folge zusammenhängender Belege, entstanden durch Weiterführung (`ReceiptBL.ForwardReceipt`). Stornierte Belege werden aus der Kette ausgeschlossen.
|
||||
|
||||
**Belegvorlage** — Beleg, der als Muster dient. Erkennbar an einer negativen Nummer (`ReceiptBase.IsTemplate => Number < 0`) und daran, dass er auf den konfigurierten Vorlagenkunden lautet.
|
||||
|
||||
**Buchhaltungsnummer** — Kontonummer eines Geschäftspartners in der Finanzbuchhaltung (`AccountCustomer.BookKeepingNumber`, `AccountSupplier.BookKeepingNumber`, `Branch.BookKeepingNumber`); wahlweise regelbasiert aus der Partnernummer mit Präfix gebildet.
|
||||
|
||||
## C
|
||||
|
||||
**c-entron classic** — In den Quellen als "c-entron (delhpi)" bzw. "c-entron Delphi" bezeichnete Vorgängeranwendung, die parallel auf denselben Datenbestand zugreift (`ApplicationSettingDefinitions.IsAccountManagementActive`, Kommentar in `CentronObjectKindNumeric`).
|
||||
|
||||
**c-entron Nexus** — Blazor-Webportal mit den Bereichen ServiceBoard (Mitarbeiter), Kundenportal, WebCart und WebOffer.
|
||||
|
||||
**C-FLOW** — In `CentronRights.md` verwendete Bezeichnung für Ticketvorlagen und die zugehörigen Rechte (`UserRightsConst.Sales.Customer.Helpdesk.CFlow.*`).
|
||||
|
||||
**Checkliste** — An ein Geschäftsobjekt gebundene Aufgabenliste (`CentronChecklist`). Über das Kennzeichen `CanCloseHelpdesk` steuert eine Checkliste, ob offene Punkte den Abschluss des Vorgangs verhindern.
|
||||
|
||||
## D
|
||||
|
||||
**Datenqualitätsdienst** — Stündlich laufender Hintergrunddienst, der Bestandsdaten bereinigt und Verknüpfungen prüft (`DataQualityService`).
|
||||
|
||||
**DSGVO-Löschung** — Kaskadierende Löschung personenbezogener Daten mit Löschprotokoll (`DataSecurityBL.DsgvoDeleteRightDeleteContacts`).
|
||||
|
||||
## E
|
||||
|
||||
**EDI** — Elektronischer Belegaustausch mit Distributoren. Unterstützt werden ALSO, ALSO CH, Alltron, Herweck, Komsa und OpenTrans; Dokumentarten sind Auftragsbestätigung, Lieferung und Rechnung (`SupplierEdiBL` mit sechs Partialdateien).
|
||||
|
||||
**Einschränkendes Recht** — Recht, das den sichtbaren oder bearbeitbaren Datenbestand *verkleinert*, statt Zugang zu gewähren. Beispiele: `SHOW_HELPDESK_ONLY_OWN`, `SHOW_HELPDESK_ONLY_OWN_BRANCH`, `OWN_TIME_EDIT`, `RIGHT_MITARBEITERAUSLASTUNGNUREIGENEFILIALE` (`CentronRights.md`: "This is a restricting right").
|
||||
|
||||
**Erwartetes Ereignis** — Je Konto definiertes, wiederkehrendes Ereignis, dessen Eintreffen protokolliert und dessen Ausbleiben ausgewertet wird (`ExpectedEventsBL`).
|
||||
|
||||
**Eskalation** — Automatische Meldung überfälliger Vorgänge in bis zu drei Stufen (`Eskalation1Am` bis `Eskalation3Am`) an bis zu vier Empfängergruppen: Bearbeiter, Vorgesetzter, ADM, Betriebsleiter (`EscalationReceiversEnum`).
|
||||
|
||||
## F
|
||||
|
||||
**Filiale** — Standort eines Mandanten mit eigener Anschrift, Buchhaltungsnummer und Sprache (`Branch`, Tabelle `Filiale`). Bestimmt Nummernkreis, Sichtbarkeit und Auswertungen.
|
||||
|
||||
**Firmengruppe** — Übergeordnetes Konto, dessen Beleg- und Preiseinstellungen ein untergeordnetes Konto übernehmen kann (`Account.CompanyGroupI3D`, `UseSettingsFromCompanyGroupForReceipts`).
|
||||
|
||||
**Freigabewesen** — Zweistufiger Genehmigungsablauf für Kundenwarenkörbe: Erstellt → In Prüfung → In Bestellung → Bestellt, mit Rückweisungszuständen (`ReceiptCartState`, `ReceiptCartReleaseSystemBL`).
|
||||
|
||||
## G
|
||||
|
||||
**Gerät** — Beim Kunden installiertes Betriebsmittel. Wird in drei getrennten Beständen geführt: Stammblatt (`MasterDataList`), Kundengerät (`AccountDevices`) und überwachtes System (`AssetManagementDevices`).
|
||||
|
||||
**Gutschrift** — Belegart zur Rückvergütung. Tabellen `GutKopf`/`GutPos`, Entität `ReceiptCreditVoucher`; in der E-Rechnung mit dem Typkennzeichen 381 (Rechnung: 380).
|
||||
|
||||
## H
|
||||
|
||||
**Helpdesk** — Servicebereich des Systems; zugleich die Bezeichnung des einzelnen Servicevorgangs (Ticket). Tabelle `hlpdsk_requests`, Entität `Helpdesk`.
|
||||
|
||||
**Hintergrunddienst** — Zeitgesteuerter Vorgang im Webservice, abgeleitet von `ManagedBackgroundService`; einzeln aktivierbar, mit Fehlerdrosselung und Laufzeitprotokoll.
|
||||
|
||||
## I
|
||||
|
||||
**I3D** — Technischer Primärschlüssel jeder Entität; laut Datenbankkonvention "ID 3develop", stets `int IDENTITY(1,1) NOT NULL`. Fremdschlüsselspalten enden auf `I3D`.
|
||||
|
||||
**Inventur** — Bestandsaufnahme mit Zuständen, Arten, Gruppenbildung und transaktionsgesicherter Erfassung (`InventorysBL`).
|
||||
|
||||
## K
|
||||
|
||||
**Kalkulation** — Bezeichnung der Lieferantenrechnung im Nummernkreissystem (`NumberGroupEnum.VendorInvoice`, Beschreibung "Kalkulation", Tabelle `KalkKopf`).
|
||||
|
||||
**Klickabrechnung** — siehe *Zählerabrechnung*.
|
||||
|
||||
**Kommissionierung** — Zusammenstellen der Ware zu einem Auftrag; entnommene Einheiten werden über Barcodes den Belegpositionen zugeordnet (`CommissioningBL`, `BarcodeToPosition`).
|
||||
|
||||
**Kontenrahmen** — Struktur der Buchhaltungskonten; im System als eigener Stammdatenbereich mit Vorlagen geführt (`BookKeepingAccountSystemBL`).
|
||||
|
||||
**Kontingent** — Im Vertrag vereinbartes Stunden- oder Wertguthaben mit Verbrauchs- und Guthabenführung, Startrestwert, Grenzwert und optionalem Ausgleichsartikel (`ReceiptContract`, Felder mit dem Präfix `Contingent`).
|
||||
|
||||
**Konto** — Zentraler Geschäftspartnerstammsatz (`Account`), an dem die Rollen Kunde (`AccountCustomer`) und Lieferant (`AccountSupplier`) hängen.
|
||||
|
||||
**Kostenstelle / Kostenträger** — Verursachungsgerechte Zuordnung von Kosten und Erlösen (`CostCenterBL`, `CostObjectBL`, `CustomerCostCenter`).
|
||||
|
||||
## L
|
||||
|
||||
**Leitweg-ID** — Adressierungsmerkmal öffentlicher Auftraggeber. Ist sie gesetzt, erzeugt das System eine XRechnung statt eines ZUGFeRD-Dokuments (`InvoiceZugferdBL.GenerateZugferdFile`).
|
||||
|
||||
**Lieferschein** — Belegart über die Warenauslieferung. Tabellen `LiefKopf`/`LiefPos`, Sicht `DeliveryLists`, Entität `ReceiptDeliveryList`.
|
||||
|
||||
**Lizenz** — Guid, die eine Anwendung oder ein Einzelmerkmal freischaltet. Kann Anzahl, Gültigkeitsdatum und Gültigkeitsversion tragen (`LicenseGuids`, `LicenseManager`).
|
||||
|
||||
## M
|
||||
|
||||
**Mahnlauf** — Zusammenfassung mehrerer Mahnungen unter einer laufenden Nummer; erhöht je Rechnung die Mahnstufe um genau eine Stufe (`DunningRunBL`).
|
||||
|
||||
**Mahnstufe** — Eskalationsgrad einer offenen Rechnung, höchstens drei Stufen (`DunningLevel`: None, Level1, Level2, Level3).
|
||||
|
||||
**Mandant** — Rechtliche Einheit mit eigenen Firmen-, Steuer- und Bankstammdaten (`Mandator`, Tabelle `Mandant`). Genau ein Mandant ist als Standardmandant gekennzeichnet.
|
||||
|
||||
**Mitarbeiterartikel** — Artikel, der einen Mitarbeiter für die Leistungsabrechnung vertritt; über ihn werden Zeiten bepreist und Auslastungen ausgewertet (`EmployeeArticleBL`, `HelpdeskTimerBL.GetEmployeeTimeStatistics`).
|
||||
|
||||
**MSP** — Managed Service Provider. Bezeichnet im System die Auswertung und Abrechnung verwalteter Kundenbestände (`MspCollector`, `MspEvaluation`, `MasterDataList.IsMsp`).
|
||||
|
||||
## N
|
||||
|
||||
**Nummernkreis** — Je Nummernart, Mandant und Filiale geführter Zähler mit Bereichsgrenzen und Schrittweite (`NumberGroup`, Tabelle `Nummernkreis`). Es bestehen 31 Nummernarten (`NumberGroupEnum`).
|
||||
|
||||
## O
|
||||
|
||||
**OPOS** — Offene Posten; Auswertung unbezahlter Rechnungen je Kunde (`OposBL`, `OposRunBL`, Reportgruppe `ReportGroupConstants.OPOS`).
|
||||
|
||||
## P
|
||||
|
||||
**Preisspiegel** — Gegenüberstellung der Einkaufspreise eines Artikels aus sieben Quellen: ITscope, Artikelimport, COP, NEOS, TradersGuide, EGIS und Aktionspreise.
|
||||
|
||||
**Provisionsschema** — Regelwerk zur Provisionsermittlung mit Staffelstufen, Kundenzuordnung, Mitarbeiterzielen und Mitarbeiterstufen (`ReceiptProvisionSchema` und zugehörige Entitäten).
|
||||
|
||||
**Prüfer** — Rolle im Freigabewesen des Warenkorbs; benötigt das Webrecht `WEBRIGHT_WEBCART2_CHECK_CART`. Die zweite Rolle ist der Einkäufer (`WEBRIGHT_WEBCART2_ORDER_CART`).
|
||||
|
||||
## R
|
||||
|
||||
**Reportgruppe** — Benannte Zusammenstellung von Berichten mit Parametern, über eine feste Guid angesprochen (`ReportGroup`, `ReportGroupConstants`).
|
||||
|
||||
**RMA** — Reklamationsvorgang mit eigenen Nummern für Vorgang (`RMANumber`), Einsendung (`RepairEntrance`) und Rücksendung (`Reshipment`) sowie Artikelhistorie (`RmaBL`).
|
||||
|
||||
**RMM** — Remote Monitoring and Management; externes Überwachungssystem, das Tickets erzeugt und Nutzungsmengen für die Abrechnung liefert (`RiverConnectionBL`, Schnittstellenpräfixe `RMMinterface/` und `RiverDivo/`).
|
||||
|
||||
## S
|
||||
|
||||
**SelfCare-Formular** — Strukturiertes Formular, das einem Kunden per Verweis zugestellt und ohne Anmeldung über einen Zugriffsschlüssel beantwortet wird (`SelfCareBL`, REST-Methoden `GetWebFormByGuid` und `WebFormReply`).
|
||||
|
||||
**SEPA-Mandat** — Einzugsermächtigung des Kunden mit Mandatsreferenz; als eigenes Dokument mit Vorlage geführt (`SepaContract`, `SepaContractTemplate`, `BankAccount.AuthorizationNumber`).
|
||||
|
||||
**ServiceBoard** — Weboberfläche für Mitarbeiter im c-entron Nexus, lizenziert über `LicenseGuids.ServiceBoardWebDev`.
|
||||
|
||||
**Sicht** — Datenbanksicht mit englischem Namen über einer historisch deutsch benannten Tabelle (z. B. `Invoices` über `RechKopf`). Die Codebasis kennt 153 Sichten.
|
||||
|
||||
**Skriptmethode** — Datenbankänderung als Klasse mit Skriptnummer und zugehöriger Anwendungsversion (`IScriptMethod`); wird genau einmal ausgeführt und in der Tabelle der Datenbankaktualisierungen vermerkt. Es bestehen 764 Skriptmethoden.
|
||||
|
||||
**Sonderpreis** — Kundenindividueller Artikelpreis (`AccountSpecialPrice`); Grundlage des Artikelangebots im WebCart.
|
||||
|
||||
**Stammblatt** — Datensatz über ein beim Kunden installiertes Gerät mit Seriennummer, Rechnungsbezug, Zählerkennzeichen und Vertragsbezug (`MasterDataList`, Sicht `cvw_MasterDataList`, Alttabelle `GeraeteKopf`). Wird vorwiegend für Drucker und Zählergeräte verwendet.
|
||||
|
||||
## T
|
||||
|
||||
**Telemetrie** — Aggregierte Erfassung der Nutzung von Schnittstelle und KI-Funktionen je Zeitfenster, Benutzer und Gerät; wird an den Hersteller übertragen (`TelemetryBL`).
|
||||
|
||||
**Ticket** — siehe Hinweis oben (Anmeldeticket oder Servicevorgang).
|
||||
|
||||
**Ticketprozess / Ticketvorlage** — Vorlage, aus der ein Ticket samt Untervorgängen und Checklisten erzeugt wird (`TicketPattern`, `TicketProcessTemplateFolder`, `HelpdeskCreationTemplate`).
|
||||
|
||||
**Ticketzeit** — Auf einem Ticket erfasste Arbeitszeit mit Start, Ende, Zeitart, Abrechenbarkeitskennzeichen und optionaler Unterschrift (`HelpdeskTimer`).
|
||||
|
||||
## V
|
||||
|
||||
**Verkaufsgebiet** — Gebietszuordnung eines Kontos (`Account.SalesAreaI3D`) und eines Mitarbeiters; wirkt im Portal als zwingende Sichtgrenze für Ticketlisten.
|
||||
|
||||
**Versionstabelle** — Tabelle mit identischem Spaltensatz zu einer Beleg-Kopf- oder Positionstabelle, in die vor jeder Änderung eine vollständige Kopie geschrieben wird (`AngKopfVersions`, `AngPosVersions` und entsprechend je Belegart).
|
||||
|
||||
**Vertrag** — Belegart für wiederkehrende Leistungen mit Laufzeit, Abrechnungsintervall, Kontingent und Zahlungsmandat (`ReceiptContract`, Tabellen `VertragKopf`/`VertragPos`).
|
||||
|
||||
## W
|
||||
|
||||
**Wareneingang** — Belegart über den Zugang von Lieferantenware (`NumberGroupEnum.Intake`, Tabelle `WareKopf`).
|
||||
|
||||
**Warenkorb (WebCart)** — Vom Kunden im Portal zusammengestellter Bestellvorschlag; technisch ein Angebot (`ReceiptOffer`) mit eigenem Zustandsraum (`ReceiptCartState`).
|
||||
|
||||
**Webaccount** — Portalzugang eines Kundenkontakts mit eigenem Rechtekatalog (`WebAccount`, `WebAccountRightsConst`). Ein Mehrkundenzugang ist möglich.
|
||||
|
||||
**Web-Beleg** — Für den Kunden im Web freigegebener Beleg mit eigenem Zustandsraum (`WebReceiptState`), begrenzten Änderungsmöglichkeiten und Zugriffsprotokoll.
|
||||
|
||||
## X
|
||||
|
||||
**XRechnung** — Deutsches Rechnungsformat auf Basis der Norm EN 16931. Unterstützt sind die Stände 1.2, 2.0, 2.2, 2.3.1 und 3.0.1 (`ZugferdKind`).
|
||||
|
||||
## Z
|
||||
|
||||
**Zählerabrechnung** — Abrechnung nach Gerätezählerständen, üblich bei Druck- und Kopiergeräten. Umfasst Zählerarten, Freimengen, Staffelpreise und Begründungen für abweichende Stände (`DeviceClickCounter` und zugehörige Entitäten).
|
||||
|
||||
**ZUGFeRD** — Hybrides Rechnungsformat aus PDF und eingebetteter XML-Datei. Unterstützt sind die Stände 1.0 sowie 2.1 in Verbindung mit den XRechnung-Ständen (`ZugferdKind`, `InvoiceZugferdBL`).
|
||||
|
||||
**Zugangstoken** — Benanntes, 48 Zeichen langes Merkmal für die Anbindung externer Systeme; im Bestand nur als SHA-256-Hashwert gespeichert (`AccessToken`, `AccessTokenBL`).
|
||||
|
||||
**Zuschlagssatz** — Aufschlag auf den Stundensatz für Nacht-, Wochenend- oder Feiertagsarbeit; die Überschneidung einer Zeit mit den Zuschlagszeiträumen wird berechnet (`HourlySurchargeRate`, `HelpdeskTimerBL.CalculateHourlySurchargeRateOverlaps`).
|
||||
|
||||
**Zwei-Faktor-Authentifizierung** — Zweiter Anmeldenachweis über einen RADIUS-Dienst oder einen E-Mail-Bestätigungslink; je Benutzer aktivierbar und für eine konfigurierbare Zahl von Kalendertagen je Anwendung, Gerät und IP-Adresse gültig (`TwoFactorAuthBL`).
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
# Hypothesen
|
||||
|
||||
**System:** c-entron ERP-Suite — Reverse Requirements Engineering
|
||||
**Stand:** 2026-08-26
|
||||
|
||||
Diese Datei enthält **genau** die Anforderungen, deren Feld `Aussage` mit `[HYPOTHESE]` gekennzeichnet ist und deren Feld `Status` den Wert `HYPOTHESE` trägt — keine weiteren freien Fragen. Offene Punkte ohne zugehörige Anforderung sind in der Selbstbewertung des `Analysebericht.md` aufgeführt.
|
||||
|
||||
**Abgleich mit den Inline-Markierungen:** 36 Anforderungen tragen die Inline-Markierung `[HYPOTHESE]`, 36 Anforderungen tragen `Status: HYPOTHESE`, und beide Mengen sind deckungsgleich. Die Tabelle unten führt dieselben 36 Anforderungen.
|
||||
|
||||
**Verteilung**
|
||||
|
||||
| Ebene | Anforderungen gesamt | davon Hypothesen | Anteil |
|
||||
|---|---|---|---|
|
||||
| StRS | 150 | 11 | 7,3 % |
|
||||
| SyRS | 155 | 17 | 11,0 % |
|
||||
| SwRS | 141 | 8 | 5,7 % |
|
||||
| **Gesamt** | **446** | **36** | **8,1 %** |
|
||||
|
||||
**Warum diese Punkte offen sind.** Sie zerfallen in drei Gruppen:
|
||||
|
||||
1. **Betriebs- und Qualitätszusagen ohne Artefaktbasis** (Verfügbarkeit, Datensicherung, Antwortzeiten, Zugänglichkeit, Aufbewahrungsfristen, Kennwortrichtlinien, Übertragungsverschlüsselung, Ratenbegrenzung, Zeitzonenregel, Mandantentrennung). Solche Zusagen stehen in Verträgen und Betriebshandbüchern, nicht im Quellcode; sie sind aus einer statischen Analyse grundsätzlich nicht ableitbar.
|
||||
2. **Funktionen, deren Daten oder Oberfläche vorliegen, deren Logik aber außerhalb dieser Codebasis liegt** (Asset-Management mit 221 Tabellen und drei Fachklassen, Gutscheinverwaltung, Dokumentensynchronisation, QM-Modul, mobile Sichten, Rechnungsarchiv, Lizenzserveranbindung, Werbewiderspruch). Hier ist die Existenz der Funktion belegt, ihr Umfang aber nicht.
|
||||
3. **Technische Fragen, die eine Ausführung oder eine Betriebsbeobachtung erfordern** (Testabdeckung, Mehrfachbetrieb der Hintergrunddienste, Speicherverhalten, ausgenommene Datenbankskripte, Binärserialisierung, Rechtezwischenspeicher, Schwachstellenlage der Fremdbibliotheken, Portalabgrenzung).
|
||||
|
||||
---
|
||||
|
||||
## Hypothesen im Einzelnen
|
||||
|
||||
| ID | Titel | Aussage | Offene Frage |
|
||||
|---|---|---|---|
|
||||
| StRS-021 | Auswertung des Werbewiderspruchs beim Kampagnenversand | [HYPOTHESE] Das System soll Empfänger mit gesetztem Werbewiderspruch vom Kampagnen- und Serienmailversand ausschließen. | An welcher Stelle (Delphi-Anwendung, Reportfilter, manueller Prozess) wird der Werbewiderspruch heute tatsächlich ausgewertet? |
|
||||
| StRS-120 | Mobile Nutzung durch Servicetechniker | [HYPOTHESE] Das System soll Servicetechnikern eine mobile Anwendung für Ticketbearbeitung und Zeiterfassung bereitstellen, die über eigene, reduzierte Stammdatensichten versorgt wird. | Existiert eine mobile Anwendung außerhalb dieses Repositoriums, und welche Funktionen deckt sie ab? |
|
||||
| StRS-128 | Qualitätsmanagementmodul | [HYPOTHESE] Das System soll qualitätsrelevante Vorgänge - etwa Prüfungen, Abweichungen und Maßnahmen - erfassen und auswerten. | Welche Vorgangsarten deckt das QM-Modul fachlich ab, und wo liegt seine Geschäftslogik? |
|
||||
| StRS-137 | IT-Dokumentation und Asset-Management der überwachten Systeme | [HYPOTHESE] Das System soll die IT-Landschaft des Kunden - Geräte, Betriebssysteme, Anwendungen, Dienste, Aktualisierungen und Prüfergebnisse - dokumentieren und überwachen; die Erhebung erfolgt durch einen externen Systemsammler. | Welche Anwendung schreibt die 17 `AssetManagement`-Tabellen, und wie ist sie zu c-entron.NET abgegrenzt? Wie wird das Feld `AssetManagementDevices.BitlockerPassword` geschützt, für das in dieser Codebasis kein Zugriff besteht? |
|
||||
| StRS-139 | Gutscheinverwaltung | [HYPOTHESE] Das System soll Gutscheine mit Barcode führen und ihren Zustand - frei, ausgegeben, eingelöst - verwalten. | Wo werden Gutscheine angelegt und eingelöst - in der Delphi-Anwendung oder außerhalb des Systems? |
|
||||
| StRS-142 | Dokumentensynchronisation mit externen Ablagen | [HYPOTHESE] Das System soll Dokumente mit einer externen Ablage abgleichen, sodass in c-entron abgelegte Dokumente auch dort verfügbar sind. | Mit welchem Zielsystem synchronisiert die Funktion, und wo liegt der Abgleichvorgang? |
|
||||
| StRS-146 | Verfügbarkeit des Gesamtsystems | [HYPOTHESE] Das System soll eine zugesagte Verfügbarkeit einhalten und im Störungsfall innerhalb einer vereinbarten Frist wieder betriebsbereit sein. | Welche Verfügbarkeit, welches Wartungsfenster und welche Wiederanlaufzeit sind vertraglich zugesagt? |
|
||||
| StRS-147 | Datensicherung und Wiederherstellung | [HYPOTHESE] Das System soll in ein Sicherungs- und Wiederherstellungsverfahren eingebunden sein, das einen definierten maximalen Datenverlust und eine definierte Wiederherstellungszeit einhält. | Wer verantwortet die Sicherung, welcher maximale Datenverlust ist zulässig und wie lange darf die Wiederherstellung dauern? |
|
||||
| StRS-148 | Aufbewahrungsfristen und Unveränderbarkeit steuerlich relevanter Belege | [HYPOTHESE] Das System soll steuerlich relevante Belege über die gesetzliche Aufbewahrungsfrist unveränderbar vorhalten und ihre Löschung vor Fristablauf verhindern. | Welche Aufbewahrungsfristen gelten je Belegart, und wie werden sie heute gegenüber der Löschfunktion durchgesetzt? |
|
||||
| StRS-149 | Mengengerüst und Antwortzeiterwartungen | [HYPOTHESE] Das System soll definierte Antwortzeiten bei einer definierten Zahl gleichzeitiger Benutzer und einem definierten Datenbestand einhalten. | Welche Antwortzeiten, Benutzerzahlen und Datenmengen sind für das Zielsystem maßgeblich? |
|
||||
| StRS-150 | Abgrenzung zur Vorgängeranwendung c-entron classic | [HYPOTHESE] Das Zielsystem soll den Funktionsumfang beider Anwendungen abdecken; der Anteil, der heute ausschließlich in der Delphi-Anwendung besteht, ist für die Neuimplementierung gesondert zu erheben. | Welche Fachfunktionen bestehen ausschließlich in der Delphi-Anwendung, und welche der 1.535 Tabellen werden ausschließlich von ihr beschrieben? |
|
||||
| SyRS-173 | Reduzierte Stammdatensichten für mobile Verbraucher | [HYPOTHESE] Das System soll mobilen Clients reduzierte Sichten auf Ticketstammdaten liefern, um Datenvolumen und Ladezeit zu begrenzen, und die Nutzung mobiler Module protokollieren. | Welcher Client verwendet die mobilen Sichten heute, und ist er noch im Einsatz? |
|
||||
| SyRS-180 | Wiederanlauf und Ausfallverhalten der Dienste | [HYPOTHESE] Das System soll bei Ausfall einzelner Bestandteile ein definiertes Ersatzverhalten zeigen, den Anwender darüber informieren und nach Behebung ohne Neustart weiterarbeiten. | Welches Verhalten ist bei Ausfall von Datenbank, Lizenzserver und externen Diensten vorgesehen, und ist ein Betrieb mit mehreren Webservice-Instanzen zugelassen? |
|
||||
| SyRS-181 | Sicherung und Wiederherstellung des Datenbestands | [HYPOTHESE] Das System soll so gesichert werden, dass Datenbank und Dateiablage zu einem gemeinsamen Zeitpunkt wiederherstellbar sind. | Wie werden Datenbank und Dateiablage heute gemeinsam gesichert? |
|
||||
| SyRS-182 | Unveränderbarkeit ausgegebener Belegdokumente | [HYPOTHESE] Das System soll ausgegebene Belegdokumente unveränderbar aufbewahren und ihre Unversehrtheit prüfbar machen. | Ist die Signatur ausgegebener Rechnungen verpflichtend, und wie wird die Unversehrtheit archivierter Dokumente geprüft? |
|
||||
| SyRS-183 | Zielwerte für Antwortzeiten und Datenmengen | [HYPOTHESE] Das System soll definierte Antwortzeiten für die häufigsten Vorgänge einhalten und diese Werte fortlaufend messen. | Welche Antwortzeitziele gelten je Vorgangsart, und ab welcher Datenmenge sind sie zu erfüllen? |
|
||||
| SyRS-184 | Schreibende Zuständigkeit je Datenbanktabelle | [HYPOTHESE] Für jede Datenbanktabelle soll genau eine schreibende Anwendung benannt sein; die heutige Verteilung auf mindestens drei Schreiber (c-entron.NET, c-entron classic, externer Systemsammler) ist zu erheben und aufzulösen. | Welche der 1.535 Tabellen werden von dieser Codebasis geschrieben, welche von der Delphi-Anwendung und welche vom externen Systemsammler? |
|
||||
| SyRS-185 | Gesicherte Übertragung zwischen den Systembestandteilen | [HYPOTHESE] Das System soll sämtliche Netzverbindungen zwischen Client, Webservice, Portal und Datenbank verschlüsselt führen. | Wird die Verbindung heute durch einen vorgelagerten Proxy gesichert, und wie ist die Datenbankverbindung geschützt? |
|
||||
| SyRS-186 | Trennung der Mandanten auf Datenhaltungsebene | [HYPOTHESE] Das System soll die Daten verschiedener Mandanten so trennen, dass ein Zugriff über die Mandantengrenze hinweg ausgeschlossen ist. | Werden Mandanten heute in getrennten Datenbanken oder in einer gemeinsamen Datenbank geführt, und wie wird die Trennung durchgesetzt? |
|
||||
| SyRS-187 | Anbindung des Lizenzservers | [HYPOTHESE] Das System soll seinen Lizenzbestand regelmäßig mit dem Lizenzserver des Herstellers abgleichen und bei fehlgeschlagenem Abgleich ein definiertes Verhalten zeigen. | Wie und wie oft wird der Lizenzbestand mit dem Lizenzserver abgeglichen, und was geschieht bei dessen Ausfall? |
|
||||
| SyRS-188 | Aufbewahrung und Bereinigung der Protokolldaten | [HYPOTHESE] Das System soll je Protokollart eine Aufbewahrungsfrist führen, Protokolldaten nach Fristablauf entfernen und dabei nachweispflichtige Protokolle von technischen unterscheiden. | Welche Aufbewahrungsfristen gelten je Protokollart, und welche Protokolle sind nachweispflichtig? |
|
||||
| SyRS-189 | Begrenzung der Aufrufhäufigkeit an der Schnittstelle | [HYPOTHESE] Das System soll die Aufrufhäufigkeit je Aufrufer begrenzen, insbesondere für anonyme und tokenbasierte Endpunkte, um automatisiertes Durchprobieren und Überlastung zu verhindern. | Besteht heute eine Begrenzung durch einen vorgelagerten Dienst, und welche Schwellen sollen im Zielsystem gelten? |
|
||||
| SyRS-190 | Kennwortrichtlinien für Benutzer- und Portalkonten | [HYPOTHESE] Das System soll für Anmeldekennwörter eine Mindestlänge, eine Komplexitätsanforderung und eine Sperre nach wiederholten Fehlversuchen durchsetzen. | Bestehen Kennwortrichtlinien außerhalb der Anwendung, etwa über Active Directory, und gelten sie auch für Portalkonten? |
|
||||
| SyRS-191 | Wirksamkeit eines Rechteentzugs auf laufende Sitzungen | [HYPOTHESE] Das System soll einen Rechteentzug innerhalb einer festgelegten Frist auf alle laufenden Sitzungen wirken lassen. | Innerhalb welcher Frist muss ein Rechteentzug auf laufende Sitzungen wirken? |
|
||||
| SyRS-192 | Barrierefreiheit der Oberflächen | [HYPOTHESE] Das System soll seine Oberflächen so gestalten, dass sie ohne Maus bedienbar, mit Bildschirmlesern erfassbar und kontrastarm gestalteten Anzeigen zugänglich sind. | Welche Zugänglichkeitsstufe ist für das Zielsystem verbindlich? |
|
||||
| SyRS-193 | Archivierung von Belegdokumenten | [HYPOTHESE] Das System soll ausgegebene Rechnungen in einem Archiv ablegen, sie dort unveränderbar vorhalten und von der Dokumentbereinigung ausnehmen. | Wo ist das Rechnungsarchiv umgesetzt, und wie ist es gegen die Dokumentbereinigung abgegrenzt? |
|
||||
| SyRS-194 | Einheitliche Behandlung von Zeitzonen | [HYPOTHESE] Das System soll Zeitangaben nach einer einheitlichen Regel speichern und vergleichen und die Regel je Feld dokumentieren. | Wird das System heute ausschließlich in einer Zeitzone betrieben? |
|
||||
| SyRS-195 | Berechtigung zeitgesteuert erzeugter Berichte | [HYPOTHESE] Das System soll zeitgesteuert erzeugte Berichte im Rechtekontext eines benannten Benutzers erstellen und ihre Inhalte auf dessen Sichtbereich begrenzen. | In welchem Rechtekontext erzeugt der Reportserver seine Berichte? |
|
||||
| SwRS-147 | Testabdeckung der Fachlogik | [HYPOTHESE] Die Software soll für ihre risikorelevanten Bereiche - Rechteprüfung, Preis- und Steuerberechnung, Abrechnung, Nummernvergabe und Zahlungsverkehr - eine nachweisbare Testabdeckung besitzen. | Wird die Testabdeckung heute gemessen, und welche Schwelle gilt für risikorelevante Bereiche? |
|
||||
| SwRS-148 | Mehrfachbetrieb der Hintergrunddienste | [HYPOTHESE] Die Software soll sicherstellen, dass bestandsweite Vorgänge auch bei mehreren gleichzeitig laufenden Instanzen genau einmal ausgeführt werden. | Ist ein Betrieb mit mehreren Webservice-Instanzen heute zugelassen? |
|
||||
| SwRS-149 | Umgang mit bekannten Speicherproblemen | [HYPOTHESE] Die Software soll ihren Speicherbedarf über lange Laufzeiten stabil halten, ohne dass eine erzwungene Speicherbereinigung erforderlich ist. | Welche Speicherprobleme bestehen fort, und welcher Speicherbedarf ist im Dauerbetrieb zu erwarten? |
|
||||
| SwRS-151 | Behandlung der von der Fehlerprüfung ausgenommenen Datenbankskripte | [HYPOTHESE] Die Software soll jedes Datenbankskript erfolgreich ausführen; Ausnahmen von der Fehlerprüfung sollen begründet, befristet und einzeln dokumentiert sein. | Warum dürfen genau diese vier Skripte fehlschlagen, und welche Folgen hat ihr Scheitern für das Schema? |
|
||||
| SwRS-152 | Verwendung der als unsicher eingestuften Serialisierung | [HYPOTHESE] Die Software soll ohne die als unsicher eingestufte Binärserialisierung auskommen; die Zwischenspeicherung der Persistenzkonfiguration ist auf ein sicheres Verfahren umzustellen. | An welcher Stelle wird die Persistenzkonfiguration serialisiert, und lässt sich dies durch einen Neuaufbau ersetzen? |
|
||||
| SwRS-153 | Wirkung des Rechtezwischenspeichers auf sicherheitsrelevante Entscheidungen | [HYPOTHESE] Die Software soll den Rechtezwischenspeicher des Clients nach jeder Rechteänderung erneuern und darf ihn nicht als alleinige Grundlage sicherheitsrelevanter Entscheidungen verwenden. | Wann wird der Rechtezwischenspeicher des Clients erneuert? |
|
||||
| SwRS-154 | Stand und Schwachstellenlage der Fremdbibliotheken | [HYPOTHESE] Die Software soll ihre Fremdbibliotheken auf einem gepflegten Stand halten und bekannte Schwachstellen in Abhängigkeiten vor der Auslieferung bewerten. | Wie werden lokal abgelegte und von Hand veränderte Bibliotheken auf Schwachstellen geprüft? |
|
||||
| SwRS-155 | Abgrenzung des Nexus-Portals zur Legacy-Schnittstelle | [HYPOTHESE] Das Portal soll auf Fachdaten über genau einen Weg zugreifen; die heutige Mischung aus Legacy-Schnittstelle, moderner Schnittstelle und unmittelbarem Zugriff auf die Geschäftslogik ist zu vereinheitlichen. | Ist das Portal als eigenständiger Dienst oder als Teil des Webservice gedacht? |
|
||||
|
||||
---
|
||||
|
||||
## Priorisierung für die Validierung durch Fachexperten
|
||||
|
||||
**Zuerst zu klären (Migrationsrelevanz hoch):**
|
||||
|
||||
1. `StRS-150` / `SyRS-184` — Abgrenzung zur Vorgängeranwendung und schreibende Zuständigkeit je Tabelle. Ohne diese Klärung ist der Migrationsumfang unbekannt.
|
||||
2. `StRS-137` — Umfang und Herkunft der 221 `AssetManagement`-Tabellen einschließlich des ungeschützt erscheinenden Feldes `BitlockerPassword`.
|
||||
3. `StRS-148` / `SyRS-182` / `SyRS-193` — Aufbewahrung, Unveränderbarkeit und Archivierung steuerlich relevanter Belege.
|
||||
4. `SyRS-186` — Trennung der Mandanten; entscheidet über die Grundarchitektur des Zielsystems.
|
||||
5. `SyRS-190` / `SyRS-185` — Kennwortrichtlinien und Übertragungsverschlüsselung; beide sind für einen Cloud-Betrieb zwingend.
|
||||
|
||||
**Danach zu klären (Betriebsrelevanz):** `StRS-146`, `StRS-147`, `StRS-149`, `SyRS-180`, `SyRS-181`, `SyRS-183`, `SyRS-188`, `SyRS-189`, `SwRS-148`, `SwRS-149`.
|
||||
|
||||
**Zuletzt zu klären (Funktionsumfang einzelner Module):** `StRS-021`, `StRS-120`, `StRS-128`, `StRS-139`, `StRS-142`, `SyRS-173`, `SyRS-187`, `SyRS-191`, `SyRS-192`, `SyRS-194`, `SyRS-195`, `SwRS-147`, `SwRS-151`, `SwRS-152`, `SwRS-153`, `SwRS-154`, `SwRS-155`.
|
||||
+3340
File diff suppressed because it is too large
Load Diff
+3144
File diff suppressed because it is too large
Load Diff
+3442
File diff suppressed because it is too large
Load Diff
+428
@@ -0,0 +1,428 @@
|
||||
# Traceability
|
||||
|
||||
**System:** c-entron ERP-Suite — Reverse Requirements Engineering
|
||||
**Stand:** 2026-08-26
|
||||
|
||||
Diese Datei stellt die Verfolgbarkeit zwischen den drei Spezifikationsebenen her.
|
||||
|
||||
- **Abschnitt 1 (Forward):** je Zeile eine Kette `StRS → SyRS → SwRS` mit dem tragenden Artefaktbeleg. Anforderungen, die auf einer Ebene keine Entsprechung haben, erscheinen mit `-`.
|
||||
- **Abschnitt 2 (Backward):** je Stakeholder-Anforderung alle Anforderungen der Ebenen SyRS und SwRS, die auf sie verweisen.
|
||||
|
||||
**Kennzahlen**
|
||||
|
||||
| Kennzahl | Wert |
|
||||
|---|---|
|
||||
| Anforderungen gesamt | 446 (StRS 150, SyRS 155, SwRS 141) |
|
||||
| Zeilen der Forward-Tabelle | 237 |
|
||||
| In der Forward-Tabelle enthaltene Anforderungs-IDs | 446 von 446 |
|
||||
| SyRS-Anforderungen mit StRS-Bezug | 155 von 155 |
|
||||
| SwRS-Anforderungen mit SyRS-Bezug | 141 von 141 |
|
||||
| StRS-Anforderungen ohne verfeinernde SyRS-/SwRS-Anforderung | 19 (StRS-126 bis StRS-145, ohne StRS-137) |
|
||||
| Tracelink-Ziele insgesamt | 368 eindeutige IDs, alle vorhanden (keine Verweise auf nicht existierende IDs) |
|
||||
|
||||
---
|
||||
|
||||
## 1. Forward-Traceability (StRS → SyRS → SwRS)
|
||||
|
||||
| StRS-ID | SyRS-ID | SwRS-ID | Artefaktbeleg |
|
||||
|---|---|---|---|
|
||||
| StRS-001 | SyRS-001 | SwRS-001 | src/backend/Centron.Entities/Entities/Administration/Company/Mandator.cs und MandatorBankInfo.cs |
|
||||
| StRS-002 | SyRS-002 | SwRS-002 | src/backend/Centron.DAO/Mappings/Administration/Company/NumberGroupMaps.cs, `Table("Nummernkreis")` |
|
||||
| StRS-106 | SyRS-160 | SwRS-003 | src/backend/Centron.BL/WebServices/ mit 464 Dateien der DTO-Umsetzungsschicht |
|
||||
| StRS-121 | SyRS-024 | SwRS-004 | src/backend/Centron.Interfaces/Results/Result.cs |
|
||||
| StRS-121 | SyRS-174 | SwRS-005 | src/backend/Centron.BL/WebServices/ObjectMapper.cs, InitializeAsyncInternal() mit den vier Konfigurationsentscheidungen |
|
||||
| StRS-106 | SyRS-160 | SwRS-006 | src/centron/Centron.WPF.UI/Services/Container/Interceptors/ContributeLogicResultInterceptorToAllLogics.cs und ContributeSetLoggedInUserInterceptorToAllLogics.cs |
|
||||
| StRS-064 | SyRS-029 | SwRS-007 | src/shared/Centron.Core/Guard.cs mit den 20 Prüfmethoden |
|
||||
| StRS-104 | SyRS-150 | SwRS-008 | src/backend/Centron.DAO/DAOSession.cs und AdvancedSession.cs |
|
||||
| StRS-027 | SyRS-057 | SwRS-009 | src/backend/Centron.DAO/GenericDAO.cs und BaseDAO.cs |
|
||||
| StRS-003 | SyRS-005 | SwRS-010 | src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs mit `protected abstract Result<LoggedInUser> AuthenticateInternal();` |
|
||||
| StRS-004 | SyRS-006 | SwRS-011 | src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs, ValidateAppUser(AppUser?) mit beiden Bedingungen und den zugehörigen Protokolleinträgen |
|
||||
| StRS-007 | SyRS-008 | SwRS-012 | src/backend/Centron.BL/Administration/Logins/TwoFactor/ITwoFactorValidator.cs mit den beiden Umsetzungen |
|
||||
| StRS-008 | SyRS-009 | SwRS-013 | src/backend/Centron.BL/Administration/Logins/Auth/AuthenticatorFactory.cs mit der Schnittstelle und den fünf öffentlichen Methoden |
|
||||
| StRS-003 | SyRS-022 | SwRS-014 | src/backend/Centron.BL/Administration/Logins/TicketBL.cs, CreateNewTicket(...) mit `GetTicketSalt(deviceID)` |
|
||||
| StRS-011 | SyRS-015 | SwRS-015 | src/backend/Centron.Entities/Entities/Administration/Logins/LoggedInUser.cs |
|
||||
| StRS-003 | SyRS-005 | SwRS-016 | src/backend/Centron.Interfaces/Administration/Logins/ApplicationKind.cs |
|
||||
| StRS-111 | SyRS-017 | SwRS-017 | src/webservice/Centron.Host/AspNetCore/WcfBridge/Interception/Interceptors/AuthenticateInterceptor.cs, `public override int Priority { get { return 10; } }` und der Kommentar zu Rang 20 |
|
||||
| StRS-005 | SyRS-011 | SwRS-018 | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, IsModuleAvailable<T>() mit `CentronCache.Instance.CurrentUserAppRights` |
|
||||
| StRS-010 | SyRS-014 | SwRS-019 | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, `ModuleFeatures.SetAccessRights(...)` unmittelbar vor der Modulauswahl |
|
||||
| StRS-005 | SyRS-010 | SwRS-020 | src/backend/Centron.BL/Accounts/AccountBL.cs, ValidateUserRights(...) mit einer Sammelabfrage über sieben Rechte und anschließenden `Contains`-Prüfungen |
|
||||
| StRS-006 | SyRS-012 | SwRS-021 | src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs, GetShowHelpdeskRight(LoggedInUser), Zeilen 236-291 |
|
||||
| StRS-006 | SyRS-012 | SwRS-022 | src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs, GetEmployeeTicketFilter(...) und GetWebAccountTicketFilter(...) |
|
||||
| StRS-010 | SyRS-013 | SwRS-023 | src/backend/Centron.BL/Administration/Licensing/LicenseManager.cs mit der Schnittstelle `ILicenseManager` sowie src/backend/Centron.Interfaces/Administration/Logins/LicenseGuids.cs |
|
||||
| StRS-011 | SyRS-015 | SwRS-024 | src/backend/Centron.BL/Administration/AccessTokens/AccessTokenBL.cs, CreatePersonalToken(...) mit Hashkonfliktprüfung |
|
||||
| StRS-012 | SyRS-016 | SwRS-025 | src/backend/Centron.BL/Sales/Receipts/ReceiptCartBL.cs, CreateNewCart(...) mit `currentUser.WebAccount.CustomerI3D.Value`, `AddressI3D` und `AddressContactI3D` |
|
||||
| StRS-005 | SyRS-011 | SwRS-026 | src/centron/Centron.WPF.UI/Modules/ModuleRightsExpressionParser.cs mit dem Kommentarblock der unterstützten Ausdrucksformen |
|
||||
| StRS-005 | SyRS-011 | SwRS-027 | src/webservice/Centron.Controllers/Authorization/AuthorizeAllUserRightsAttribute.cs, `if (_requiredRightIds.Length == 0 || !hasAllRights) context.Result = new ForbidResult();` |
|
||||
| StRS-006 | SyRS-012 | SwRS-028 | src/nexus/CentronNexus/Shared/Authorization/ mit den 13 genannten Bausteinen |
|
||||
| StRS-003 | SyRS-007 | SwRS-029 | src/backend/Centron.Common/TextCoding/ mit vier Klassen |
|
||||
| StRS-013 | SyRS-018 | SwRS-030 | src/backend/Centron.DAO/ChangeTracking/ChangeTrackingEventListener.cs, OnPreUpdate(PreUpdateEvent) mit beiden Zwischenspeichern |
|
||||
| StRS-013 | SyRS-018 | SwRS-031 | src/backend/Centron.Entities/ mit 36 Entitäten der Endung `Log` und 27 mit `History` im Namen |
|
||||
| StRS-014 | SyRS-019 | SwRS-032 | src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs, die elf Löschmethoden mit dem Parameter `isReferenceDelete` |
|
||||
| StRS-015 | SyRS-020 | SwRS-033 | src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs mit den vier Fachklassen und `AddAccessDataProperties(..., bool includeFileData, bool includeImageData)` |
|
||||
| StRS-015 | SyRS-021 | SwRS-034 | src/backend/Centron.Common/TextCoding/AESCryptoLogic.cs, GetKeyAndIV(string) mit den beiden `Buffer.BlockCopy`-Aufrufen |
|
||||
| StRS-013 | SyRS-018 | SwRS-035 | src/backend/Centron.Entities/Entities/BaseEntity.cs |
|
||||
| StRS-121 | SyRS-174 | SwRS-036 | src/backend/Centron.Interfaces/CentronObjectKindNumeric.cs mit dem hervorgehobenen Kopfkommentar |
|
||||
| StRS-099 | SyRS-145 | SwRS-037 | src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs, `Description = EnumHelper.GetEnumDescription(numberGroup)` |
|
||||
| StRS-027 | SyRS-057 | SwRS-038 | src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs, Verwendung von `NamedQueryEnums.PasswordManager.GetPropertyValueSealInformations` mit `NamedQueryParameter` |
|
||||
| StRS-102 | SyRS-148 | SwRS-039 | docs/guides/database/database-conventions.md mit allen genannten Regeln und zwei vollständigen Beispieltabellen |
|
||||
| StRS-016 | SyRS-030 | SwRS-040 | src/backend/Centron.DAO/Repositories/Accounts/AccountRepository.cs, Zeilen 663 und 1246 mit dem Abgleich in beide Richtungen |
|
||||
| StRS-016 | SyRS-030 | SwRS-041 | src/backend/Centron.Entities/Entities/Accounts/ mit den genannten Entitäten |
|
||||
| StRS-022 | SyRS-033 | SwRS-042 | src/backend/Centron.BL/Sales/Customers/CrmProjects/CrmProjectBL.cs, Zeilen 110-125 mit Transaktionsklammer und Nachverfolgungsfeldern |
|
||||
| StRS-024 | SyRS-036 | SwRS-043 | src/backend/Centron.DAO/Mappings/Warehousing/ActionPriceMaps.cs und src/backend/Centron.BL/Warehousing/ActionPriceBL.cs |
|
||||
| StRS-025 | SyRS-060 | SwRS-044 | src/backend/Centron.Entities/Entities/DataExchange/PaymentTransactions/PaymentInformation.cs und PaymentTransactionExportItem.cs |
|
||||
| StRS-026 | SyRS-037 | SwRS-045 | src/backend/Centron.DAO/Mappings/Sales/Receipts/MasterDataLists/MasterDataListMaps.cs, `this.ReadOnly();` |
|
||||
| StRS-026 | SyRS-037 | SwRS-046 | src/backend/Centron.DAO/Mappings/Devices/AccountDeviceMaps.cs mit durchgängigem `Not.Nullable()` und src/backend/Centron.Entities/Entities/Devices/AccountDevice.cs mit den Vorbelegungen |
|
||||
| StRS-030 | SyRS-043 | SwRS-047 | src/backend/Centron.BL/Sales/Receipts/ReceiptCartReleaseSystemBL.cs, `this.Session.GetSession().Query<AngKopf>().Where(...).UpdateBuilder().Set(f => f.CartState, nextState).Update();` |
|
||||
| StRS-027 | SyRS-057 | SwRS-048 | SSMS_DB_SCHEMA.sql mit 1.535 Tabellen und 153 Sichten |
|
||||
| StRS-027 | SyRS-057 | SwRS-049 | src/backend/Centron.DAO/UserTypes/DelphiColorToColorCustomType.cs und DelphiColorStringToHexColorCustomType.cs |
|
||||
| StRS-027 | SyRS-040 | SwRS-050 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs (11.441 Zeilen) |
|
||||
| StRS-027 | SyRS-056 | SwRS-051 | src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptItemBase.cs und ReceiptSupplierItemBase.cs |
|
||||
| StRS-028 | SyRS-041 | SwRS-052 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, die vier genannten Zeilen mit jeweils eigener Zustandsprüfung |
|
||||
| StRS-029 | SyRS-042 | SwRS-053 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, `private Result CanUserEditReceipt(...)` mit den vier Aufrufstellen |
|
||||
| StRS-030 | SyRS-043 | SwRS-054 | src/backend/Centron.BL/Sales/Receipts/ReceiptCartBL.cs, `var offer = this.CreateNewVersion(cartI3D, currentUser);` vor jeder Änderung |
|
||||
| StRS-031 | SyRS-044 | SwRS-055 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, sechs Fundstellen der identischen Prüfung |
|
||||
| StRS-033 | SyRS-045 | SwRS-056 | src/backend/Centron.BL/Administration/Company/NumberGroupBL.cs mit den sieben Methoden und beiden Schleifenarten |
|
||||
| StRS-035 | SyRS-047 | SwRS-057 | src/backend/Centron.BL/Warehousing/TaxBL.cs mit den elf Methoden |
|
||||
| StRS-037 | SyRS-049 | SwRS-058 | src/backend/Centron.BL/Sales/Receipts/ReceiptTemplateBL.cs |
|
||||
| StRS-038 | SyRS-050 | SwRS-059 | src/backend/Centron.BL/Sales/Receipts/ReceiptProvisionSchemaBL.cs, ReceiptProvisionEmployeeGoalBL.cs, ReceiptProvisionEmployeeLevelBL.cs |
|
||||
| StRS-040 | SyRS-052 | SwRS-060 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Aufruf `_receiptLayoutItemKindPdfHelperBL.CreatePdf(...)` mit elf Parametern |
|
||||
| StRS-041 | SyRS-053 | SwRS-061 | src/backend/Centron.BL/DataExchange/EDI/SaleInvoices/InvoiceZugferdBL.cs mit den genannten Methoden und der Teildatei für ZUGFeRD 1.0 |
|
||||
| StRS-042 | SyRS-054 | SwRS-062 | src/backend/Centron.BL/Sales/Receipts/ReceiptCartReleaseSystemBL.cs, die vier Empfängerermittlungen und fünf Empfängergruppen |
|
||||
| StRS-030 | SyRS-043 | SwRS-063 | src/backend/Centron.DAO/Repositories/Sales/Receipts/ mit elf `SaveReceipt*Repository`-Klassen und der Basis `SaveReceiptRepository.cs` |
|
||||
| StRS-013 | SyRS-018 | SwRS-064 | src/backend/Centron.BL/Sales/Receipts/ReceiptLogBL.cs mit den typisierten Erzeugungsmethoden |
|
||||
| StRS-028 | SyRS-041 | SwRS-065 | src/backend/Centron.BL/Sales/Receipts/ReceiptProgressionBL.cs |
|
||||
| StRS-024 | SyRS-036 | SwRS-066 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Zeilen 5735-5750 mit dem Ausschluss von Rabatt- und Frachtposition aus der Bemessungsgrundlage |
|
||||
| StRS-028 | SyRS-041 | SwRS-067 | src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptCompleteReason.cs und src/backend/Centron.BL/Sales/Receipts/ReceiptCompleteReasonBL.cs |
|
||||
| StRS-041 | SyRS-053 | SwRS-068 | src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptBase.cs mit den vier Empfängerangaben |
|
||||
| StRS-027 | SyRS-040 | SwRS-069 | src/backend/Centron.Entities/Entities/Sales/Receipts/LeasingAndService/LeasingLog.cs und ServiceLog.cs |
|
||||
| StRS-044 | SyRS-070 | SwRS-070 | src/backend/Centron.Entities/Entities/Sales/Receipts/ContractLists/ReceiptContract.cs mit den vier Verweisen |
|
||||
| StRS-045 | SyRS-071 | SwRS-071 | src/backend/Centron.BL/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaBL.cs (500 Zeilen) und AutomaticFacturaBL.Contracts.cs (2.432 Zeilen) |
|
||||
| StRS-046 | SyRS-072 | SwRS-072 | src/backend/Centron.BL/WebServices/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaWebServiceBL.cs, AddInterval(...) ohne Datenbankzugriff |
|
||||
| StRS-047 | SyRS-073 | SwRS-073 | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, WriteReceiptLogs(...), Zeilen 10313-10332 |
|
||||
| StRS-048 | SyRS-074 | SwRS-074 | src/backend/Centron.Entities/Entities/Sales/CustomerAssets/Contracts/ClickContracts/ mit den vier Entitäten |
|
||||
| StRS-049 | SyRS-075 | SwRS-075 | src/backend/Centron.BL/RiverDivo/RiverConnectionBL.cs, Zeile 41, Signatur und Rückgabetyp |
|
||||
| StRS-050 | SyRS-076 | SwRS-076 | src/backend/Centron.BL/Sales/CustomerAssets/TimerBilling/TimerBillingBL.cs und src/backend/Centron.BL/WebServices/Sales/CustomerAssets/TimerBilling/TimerBillingWebServiceBL.cs |
|
||||
| StRS-049 | SyRS-075 | SwRS-077 | src/backend/Centron.BL/WebServices/Sales/CustomerAssets/AutomaticFactura/AutomaticFacturaWebServiceBL.cs, `var calcAmount = articleReference.CalculateContractBillingAmount(totalQuantity);` |
|
||||
| StRS-052 | SyRS-078 | SwRS-078 | src/backend/Centron.Entities/Entities/Statistics/MspCollectors/MspEvaluation/MspEvaluationHistory.cs mit `ReceiptState` |
|
||||
| StRS-044 | SyRS-079 | SwRS-079 | src/webservice/Centron.Host/AspNetCore/HostedServices/ContractEndeService.cs mit `session.GetBL<ContractWebServiceBL>().RefreshContractEndeDate();` |
|
||||
| StRS-053 | SyRS-080 | SwRS-080 | src/backend/Centron.BL/Warehousing/ mit den genannten Fachklassen |
|
||||
| StRS-055 | SyRS-082 | SwRS-081 | src/backend/Centron.BL/Warehousing/SecondStockArticleBL.cs, RebookStockArticle(...) mit `if (sourceStoreI3D == -1 || destinationStoreI3D == -1)` |
|
||||
| StRS-060 | SyRS-087 | SwRS-082 | src/backend/Centron.BL/EDI/SupplierEDI/ mit sieben Teildateien und ClientConnectBL |
|
||||
| StRS-061 | SyRS-088 | SwRS-083 | src/backend/Centron.BL/Warehousing/ActionPriceBL.cs mit den vier Methoden |
|
||||
| StRS-056 | SyRS-083 | SwRS-084 | src/backend/Centron.BL/Storage/StorageBL.cs, `public delegate void ViewState(string Text, int StorageI3D, int Count, int Position);` |
|
||||
| StRS-057 | SyRS-084 | SwRS-085 | src/backend/Centron.DAO/Mappings/Sales/CustomerAssets/BarcodeToPositionMaps.cs und BarcodeToPosition2Maps.cs |
|
||||
| StRS-061 | SyRS-088 | SwRS-086 | src/backend/Centron.BL/Warehousing/External/ExternalArticleBL.cs |
|
||||
| StRS-053 | SyRS-080 | SwRS-087 | src/backend/Centron.BL/Warehousing/ArticleUnitBL.cs und ArticleUnitHelper.cs |
|
||||
| StRS-055 | SyRS-082 | SwRS-088 | src/backend/Centron.BL/Warehousing/StockManagement/StorageAreaBL.cs und StoragePlaceBL.cs |
|
||||
| StRS-087 | SyRS-130 | SwRS-089 | src/backend/Centron.BL/Warehousing/StockManagement/PartListArticleBL.cs |
|
||||
| StRS-064 | SyRS-100 | SwRS-100 | src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs, Save(...) und DoBeforeSave(...) mit der vollständigen Schrittfolge |
|
||||
| StRS-066 | SyRS-102 | SwRS-101 | src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs, DeleteHelpdeskTimer(...) mit `Task.Run(async () => { using var newSession = new DAOSession(); await new ScheduleBL(newSession).DeleteTimeSchedule(...); });` |
|
||||
| StRS-067 | SyRS-103 | SwRS-102 | src/backend/Centron.BL/WebServices/Sales/Support/HelpdeskTimerWebServiceBL.cs, ThrowIfUserDoesntHaveRightToChangeHelpdeskTimers(...) mit drei `throw new ResultException(...)` |
|
||||
| StRS-068 | SyRS-104 | SwRS-103 | src/backend/Centron.BL/Sales/Support/HelpdeskBL.cs, Zeilen 786-827 mit Schleife und Kommentar |
|
||||
| StRS-069 | SyRS-105 | SwRS-104 | src/backend/Centron.BL/Sales/Support/Escalation/EscalationBL.cs, TestEscalation(EscalationTestFilter) und DoEscalation(EscalationTestFilter) |
|
||||
| StRS-070 | SyRS-106 | SwRS-105 | src/backend/Centron.BL/CheckListArea/CentronChecklistBL.cs, GetChecklistsAsTextFromObject(CentronObjectKindNumeric, int, bool) |
|
||||
| StRS-074 | SyRS-110 | SwRS-106 | src/backend/Centron.BL/SelfCare/SelfCareBL.cs mit dem wiederkehrenden Vierermuster je Objektart |
|
||||
| StRS-077 | SyRS-113 | SwRS-107 | src/backend/Centron.BL/ArtificialIntelligence/ApiClientFactory.cs, AiHttpModelCatalogClient.cs und AiApiLinkValidator.cs |
|
||||
| StRS-013 | SyRS-018 | SwRS-108 | src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs, DeleteHelpdeskTimer(...) mit dem vollständigen Aufruf von `CreateHistory` |
|
||||
| StRS-073 | SyRS-109 | SwRS-109 | src/backend/Centron.BL/CustomerArea/RmaBL.cs mit den fünf Objektarten und den genannten Methoden |
|
||||
| StRS-078 | SyRS-120 | SwRS-110 | src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningRunBL.cs mit den neun Schritten |
|
||||
| StRS-081 | SyRS-122 | SwRS-111 | src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs, ExportInvoicesThroughSepa(...) mit `new PaymentTransactionSepaInterface().CreateSepaFile(...)` |
|
||||
| StRS-080 | SyRS-121 | SwRS-112 | src/backend/Centron.BL/Sales/Receipts/Invoices/Opos/OposRunBL.cs mit der vollständigen Ablaufkette |
|
||||
| StRS-080 | SyRS-121 | SwRS-113 | src/backend/Centron.BL/DataExchange/PaymentTransactions/PaymentTransactionBL.cs, InvoiceExportDone(...) mit der vollständigen Befüllung des Protokolls |
|
||||
| StRS-041 | SyRS-053 | SwRS-114 | src/backend/Centron.Entities/Entities/DataExchange/BookKeeping/Export/BookKeepingReceipt.cs |
|
||||
| StRS-081 | SyRS-122 | SwRS-115 | src/backend/Centron.Gateway/DataExchange/PaymentTransactions/Sepa/pain.008.001.02_GBIC_3.xsd und die daraus erzeugte Klasse pain_008_001_02_GBIC_3.cs |
|
||||
| StRS-096 | SyRS-142 | SwRS-120 | src/backend/Centron.BL/IndexSearch/IndexSearchBL.cs, `_objectIndexes` mit `IObjectFulltextIndex` |
|
||||
| StRS-102 | SyRS-148 | SwRS-121 | src/backend/Centron.BL/Administration/Scripts/ScriptMethods/ mit `IScriptMethod`, `BaseScriptMethod`, `BaseRecurringScriptMethod`, `IRecurringScriptMethod`, `ScriptMethodPool`, `ScriptMethodsCollection`, `ScriptMethodKind` und `ScriptHelpers` |
|
||||
| StRS-104 | SyRS-150 | SwRS-122 | src/webservice/Centron.Host/AspNetCore/HostedServices/ManagedBackgroundService.cs mit den vier Vorlagenmethoden und den beiden Pflichtangaben |
|
||||
| StRS-097 | SyRS-143 | SwRS-123 | src/backend/Centron.BL/MassUpdate/MassUpdateBL.cs mit den vier Ausführungsmethoden und drei Suchvarianten |
|
||||
| StRS-105 | SyRS-151 | SwRS-124 | src/backend/Centron.BL/Telemetry/TelemetryBL.cs, `internal TelemetryBL(DAOSession session)` mit durchgängig `public virtual`-Methoden |
|
||||
| StRS-100 | SyRS-146 | SwRS-125 | src/backend/Centron.BL/NexusNotifications/NexusNotificationsBL.cs mit `DBBaseBL<NexusNotification>` als Basis |
|
||||
| StRS-019 | SyRS-032 | SwRS-126 | src/backend/Centron.BL/Services/CachedTableBL.cs mit den sechs Methoden |
|
||||
| StRS-121 | SyRS-174 | SwRS-127 | src/backend/Centron.BL/WebServices/ObjectMapperConfiguration/ mit den fachbereichsbezogenen Profilen |
|
||||
| StRS-015 | SyRS-021 | SwRS-128 | src/backend/Centron.BL/Administration/CentronConfigDb/IMasterPasswordStorage.cs mit den drei Methoden |
|
||||
| StRS-010 | SyRS-014 | SwRS-129 | src/backend/Centron.BL/Modules/ModuleBL.cs, ModuleCategoryBL.cs und ModuleClass.cs |
|
||||
| StRS-106 | SyRS-160 | SwRS-130 | src/centron/Centron.WPF.UI/Services/Logics/TwoFactorAuthenticator/ mit den drei Typen |
|
||||
| StRS-121 | SyRS-174 | SwRS-131 | src/webservice/Centron.Host/Services/CentronRestServiceParts/ mit 32 Teildateien und CentronRestServiceInterfaceParts/ mit den zugehörigen Vertragsteilen |
|
||||
| StRS-122 | SyRS-175 | SwRS-132 | src/webservice/Centron.Controllers/Controllers/Unversioned/JwtAuthController.cs mit primärem Konstruktor |
|
||||
| StRS-123 | SyRS-176 | SwRS-133 | src/webservice/Centron.Host/Services/CentronRestServiceParts/CentronRestService.RMM.cs und CentronRestService.RiverDivo.cs |
|
||||
| StRS-113 | SyRS-026 | SwRS-134 | src/nexus/CentronNexus/Shared/Auth/AuthController.cs, `await HttpContext.SignOutAsync("OpenIdConnectTemp");` mit dem erläuternden Kommentar |
|
||||
| StRS-075 | SyRS-028 | SwRS-135 | src/backend/Centron.Common/DeveloperSecurity.cs mit den drei schreibgeschützten Eigenschaften und der Prüfmethode |
|
||||
| StRS-075 | SyRS-039 | SwRS-136 | src/backend/Centron.BL/Core/ReplacementBL.cs |
|
||||
| StRS-113 | SyRS-167 | SwRS-137 | src/nexus/CentronNexus.Host/Program.cs, Zeilen 317-337 mit der Unterscheidung von `AddScoped` und `AddSingleton` |
|
||||
| StRS-119 | SyRS-172 | SwRS-138 | src/nexus/CentronNexus.OutlookAddIn/ mit den neun Bereichen und der eigenen Ressourcendatei |
|
||||
| StRS-099 | SyRS-145 | SwRS-139 | src/shared/Centron.Controls/ mit rund 40 fachlichen Bereichen |
|
||||
| StRS-106 | SyRS-004 | SwRS-140 | Directory.Build.props mit allen genannten Eigenschaften |
|
||||
| StRS-121 | SyRS-024 | SwRS-141 | src/centron/Centron.WPF.UI/Services/Container/Interceptors/CatchExceptionMakeErrorResultInterceptor.cs und LogErrorResultInterceptor.cs |
|
||||
| StRS-064 | SyRS-029 | SwRS-142 | src/backend/Centron.DAO/DAOFactory.cs, die vier `AppendListeners`-Aufrufe |
|
||||
| StRS-019 | SyRS-032 | SwRS-143 | src/backend/Centron.BL/MassUpdate/MassUpdateBL.cs, Rückgabetyp `AccountSearchItemDTOPagingDTO` |
|
||||
| StRS-125 | SyRS-178 | SwRS-144 | tests/ mit den neun Projekten und 246 Ende-zu-Ende-Testdateien |
|
||||
| StRS-005 | SyRS-010 | SwRS-145 | docs/ mit 44 Dokumenten in acht Kategorien und docs/README.md als Inhaltsverzeichnis |
|
||||
| StRS-150 | SyRS-184 | SwRS-146 | src/backend/Centron.BL/Administration/Company/NumberGroupEnum.cs, `[Description("[nicht verwendet]")]` für `Contract` und `ClickContract` |
|
||||
| StRS-125 | SyRS-178 | SwRS-147 | tests/backend/Centron.Tests.BL mit 21 Testdateien gegenüber 14.707 C#-Dateien im Gesamtbestand |
|
||||
| StRS-044 | SyRS-079 | SwRS-148 | src/webservice/Centron.Host/AspNetCore/HostedServices/ManagedBackgroundService.cs ohne Instanzkennung oder Ausführungssperre |
|
||||
| StRS-104 | SyRS-150 | SwRS-149 | src/webservice/Centron.Host/AspNetCore/HostedServices/ForceGarbageCollectService.cs |
|
||||
| StRS-125 | SyRS-178 | SwRS-150 | src/webservice/Centron.WebServices.Core/EntitiesWrongPlace/ und MultiTargetingWorkaround/ |
|
||||
| StRS-102 | SyRS-148 | SwRS-151 | src/backend/Centron.BL/Administration/Scripts/ScriptEngineBL.cs, `private static int[] _scriptIgnoreIfErrorList = { 10178, 10210, 10211, 50000 };` ohne erläuternden Kommentar |
|
||||
| StRS-106 | SyRS-004 | SwRS-152 | Directory.Build.props, `<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>` mit dem erläuternden Kommentar |
|
||||
| StRS-005 | SyRS-011 | SwRS-153 | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, IsModuleAvailable<T>() gegen `CentronCache.Instance.CurrentUserAppRights` |
|
||||
| StRS-106 | SyRS-004 | SwRS-154 | Directory.Build.props, `WarningsNotAsErrors` mit `NU1901;NU1902;NU1903;NU1904` und dem Kommentar "Nuget known vulnerabilities should not break the build" |
|
||||
| StRS-113 | SyRS-167 | SwRS-155 | src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs mit `using Centron.BusinessLogic.Administration.Rights;` und `centronService.GetEmployeeToSalesAreaMappings(...)` |
|
||||
| StRS-108 | SyRS-003 | - | docker/compose/compose.yaml mit den vier Diensten, Abhängigkeiten und Portzuordnungen |
|
||||
| StRS-003 | SyRS-023 | SwRS-014 | src/backend/Centron.BL/Administration/Logins/TicketBL.cs, SetLoginIP(AppUser) mit dem Ersatzwert `"[unknown]"` |
|
||||
| StRS-010 | SyRS-025 | SwRS-132 | src/webservice/Centron.Controllers/Authorization/CentronHostedAuthorization.cs, HandleRequirementAsync(...) mit der Lizenzprüfung |
|
||||
| StRS-119 | SyRS-027 | SwRS-134 | src/nexus/CentronNexus.Host/Program.cs, Zeilen 272-273 |
|
||||
| StRS-017 | SyRS-031 | - | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Region "Adressen/CRM" mit den drei Bedingungen auf `IsAccountManagementActive` |
|
||||
| StRS-020 | SyRS-034 | SwRS-041 | src/backend/Centron.Entities/Entities/Accounts/Campaigns/ mit den zehn genannten Entitäten |
|
||||
| StRS-023 | SyRS-035 | - | src/backend/Centron.Entities/Entities/Accounts/Survey/SurveyProcessProperties.cs und SurveyStepInstruction.cs |
|
||||
| StRS-035 | SyRS-038 | - | src/backend/Centron.BL/CountryArea/CountryBL.cs und FederalStateBL.cs |
|
||||
| StRS-034 | SyRS-046 | - | SSMS_DB_SCHEMA.sql, `CREATE TABLE [dbo].[Zahkond]` mit den 19 Gültigkeitsspalten und den vier Fälligkeitsspalten |
|
||||
| StRS-036 | SyRS-048 | - | src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptBase.cs, `CurrencyFactor` |
|
||||
| StRS-039 | SyRS-051 | - | src/backend/Centron.BL/Sales/Receipts/DownPayment/DownPaymentBL.cs |
|
||||
| StRS-043 | SyRS-055 | - | src/backend/Centron.BL/Sales/CustomerAssets/Contracts/ContractExternalArticleImportHeadBL.cs und ContractExternalArticleImportPositionsBL.cs |
|
||||
| StRS-040 | SyRS-058 | - | src/backend/Centron.BL/Sales/Receipts/ReceiptBL.cs, Zeile 330, ExportReceiptToExcel(...) |
|
||||
| StRS-031 | SyRS-059 | - | src/backend/Centron.Entities/Entities/Sales/CustomerAssets/AssetLocks/AssetLock.cs mit `Lockuser` und `Version` |
|
||||
| StRS-051 | SyRS-077 | - | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Registrierung `FlatRateProjectAppModuleController` mit drei Rechte-IDs |
|
||||
| StRS-054 | SyRS-081 | - | src/webservice/Centron.Host/AspNetCore/HostedServices/UpdateArticleAndMaterialGroupTaxRatesService.cs |
|
||||
| StRS-058 | SyRS-085 | - | src/backend/Centron.Entities/Entities/Sales/Receipts/ReceiptSupplierItemBase.cs |
|
||||
| StRS-059 | SyRS-086 | - | src/centron/Centron.WPF.UI/Modules/Purchasing/OrderSuggestionList/ |
|
||||
| StRS-062 | SyRS-089 | - | src/apis/Centron.Api.Gls/CentronGlsErrors.cs |
|
||||
| StRS-063 | SyRS-090 | - | src/webservice/Centron.Host/AspNetCore/HostedServices/ArticleImportService.cs |
|
||||
| StRS-064 | SyRS-101 | SwRS-100 | src/backend/Centron.BL/Sales/Support/UpdateHelpdeskBL.cs, UpdateCategory(...) mit der vollständigen Ableitung über `grandParent ?? parent ?? category` |
|
||||
| StRS-071 | SyRS-107 | - | src/backend/Centron.Entities/Entities/CustomerArea/Support/TicketPattern.cs, TicketPatternChecklistLink.cs, TicketPatternCustomerMapping.cs, TicketPatternPreview.cs |
|
||||
| StRS-072 | SyRS-108 | - | src/backend/Centron.BL/TicketProjects/TicketProjectBL.cs und src/backend/Centron.BL/Sales/Support/TicketProjectDependencyBL.cs |
|
||||
| StRS-075 | SyRS-111 | - | src/backend/Centron.BL/MailScanner/MailScannerBL.cs mit Profilen, Arbeitsabläufen, Schritten und Protokoll |
|
||||
| StRS-076 | SyRS-112 | - | src/backend/Centron.BL/ExpectedEvents/ExpectedEventsBL.cs mit den acht Methoden |
|
||||
| StRS-082 | SyRS-123 | - | src/backend/Centron.Entities/Entities/DataExchange/BookKeeping/Export/BookKeepingReceipt.cs |
|
||||
| StRS-084 | SyRS-124 | - | src/backend/Centron.BL/Administration/BookKeepingAccountSystems/BookKeepingAccountSystemBL.cs |
|
||||
| StRS-085 | SyRS-125 | - | src/backend/Centron.BL/Warehousing/CostCenterBL.cs und CostObjectBL.cs |
|
||||
| StRS-086 | SyRS-126 | - | src/apis/Centron.APIs.FinAPI/FinApiClient.cs mit Requests, Responses und RestClient |
|
||||
| StRS-089 | SyRS-131 | - | src/backend/Centron.BL/Sales/Support/HelpdeskTimerBL.cs, GetEmployeeTimeStatistics(...) |
|
||||
| StRS-090 | SyRS-132 | - | src/backend/Centron.BL/MyDay/MyDayBL.cs, die genannten Methoden einschließlich SaveOrUpdateFinalizedDay(...) |
|
||||
| StRS-091 | SyRS-133 | - | src/webservice/Centron.Host/AspNetCore/HostedServices/ExchangeSyncService.cs, `CheckConfigAndSettingsAsync` mit `_couldExecute` und die Fehlerbehandlung |
|
||||
| StRS-092 | SyRS-134 | - | src/backend/Centron.BL/Tapi/PhoneCallBL.cs, SyncPhoneCalls(), Zeilen 283-330 mit der vollständigen Prüfkette |
|
||||
| StRS-093 | SyRS-140 | - | src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningRunBL.cs, GenerateReportParameters(...) und SetValueForParameter(...) |
|
||||
| StRS-095 | SyRS-141 | - | src/backend/Centron.BL/Administration/FileManagement/DirectoryReferenceProviders/Sepa/SepaDirectoryReferenceProvider.cs |
|
||||
| StRS-098 | SyRS-144 | - | src/backend/Centron.BL/PasswordManager/PasswordManagerBL.cs, Zeile 608 (`CreateProperty("Passwort", CustomizationDataTypes.EncryptedText)`), Zeile 700 (Verschlüsselung) und Zeile 1052 (Entschlüsselung) |
|
||||
| StRS-101 | SyRS-147 | - | src/backend/Centron.BL/ExternalToolsBL/ExternalToolBL.cs |
|
||||
| StRS-103 | SyRS-149 | - | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Registrierung `SqlManagerAppModuleController` mit `SQL_MANAGER` |
|
||||
| StRS-107 | SyRS-161 | - | .github/workflows/build.yml, Auftrag "Build and sign" mit den Versionsausgaben |
|
||||
| StRS-108 | SyRS-162 | - | src/webservice/Centron.Host/AspNetCore/WcfBridge/ |
|
||||
| StRS-109 | SyRS-163 | - | src/backend/Centron.DAO/DAOFactory.cs, SetConnection(IDAOConnection, string) mit Sperre, Neuaufbau und `AddApplicationName(...)` |
|
||||
| StRS-110 | SyRS-164 | - | src/centron/Centron.WPF.UI/nlog.config mit allen genannten Parametern |
|
||||
| StRS-111 | SyRS-165 | - | src/webservice/Centron.Host/Services/ICentronRestService.cs, `CheckTransferToWebService` und `CheckWebServiceToSqlServerTransfer` |
|
||||
| StRS-112 | SyRS-166 | - | src/webservice/Centron.Controllers/Controllers/v1/Administration/ThemesController.cs |
|
||||
| StRS-113 | SyRS-168 | - | src/nexus/CentronNexus/Shared/Auth/AuthPage.razor, CustomerAuthPage.razor und OutlookAuthPage.razor |
|
||||
| StRS-115 | SyRS-169 | SwRS-062 | src/backend/Centron.BL/Sales/Receipts/ReceiptCartBL.cs, CreateNewCart(...) und UpdateCartInfo(...) mit der Prüfreihenfolge |
|
||||
| StRS-116 | SyRS-170 | - | src/backend/Centron.Interfaces/Sales/Receipts/WebReceipt/WebReceiptState.cs und src/backend/Centron.Entities/Entities/Administration/Documents/Receipts/ReceiptPdfDocument.cs |
|
||||
| StRS-117 | SyRS-171 | - | src/backend/Centron.Entities/Entities/Administration/FileManagement/SharedDocuments/SharedDocumentLog.cs |
|
||||
| StRS-120 | SyRS-173 | - | src/backend/Centron.Entities/Entities/CustomerArea/Support/MobileHelpdesk.cs, HelpdeskCategoryMobile.cs, HelpdeskPriorityMobile.cs, HelpdeskStateMobile.cs |
|
||||
| StRS-124 | SyRS-177 | - | src/backend/Centron.BL/ObjectExternalReferences/ObjectExternalReferenceBL.cs mit `DeleteReference(int objectI3D, CentronObjectKindNumeric kind)` |
|
||||
| StRS-125 | SyRS-179 | - | Directory.Build.props, `<TreatWarningsAsErrors>true</TreatWarningsAsErrors>` und `<WarningsNotAsErrors>$(WarningsNotAsErrors);NU1901;NU1902;NU1903;NU1904;NU1510;NU1603;CS0618;ASPDEPR004;ASPDEPR008</WarningsNotAsErrors>` |
|
||||
| StRS-146 | SyRS-180 | - | src/backend/Centron.DAO/DAOFactory.cs, TryRecoverConnectionPool(Exception) mit `SqlConnection.ClearAllPools()` |
|
||||
| StRS-147 | SyRS-181 | SwRS-128 | SSMS_DB_SCHEMA.sql, Datenbankdefinition mit Dateipfaden und Größen |
|
||||
| StRS-148 | SyRS-182 | - | src/backend/Centron.Entities/Entities/Administration/Documents/Receipts/ReceiptPdfDocument.cs und ReceiptPdfDocumentLog.cs |
|
||||
| StRS-149 | SyRS-183 | SwRS-022 | src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs, Kommentar "This is a WebService call which is not cached. This is called each time the ticket list is rendered." |
|
||||
| StRS-003 | SyRS-185 | - | src/nexus/CentronNexus.Host/Program.cs, `options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;` |
|
||||
| StRS-001 | SyRS-186 | - | src/backend/Centron.DAO/DAOFactory.cs, SetConnection(IDAOConnection, string) mit Neuaufbau der Sitzungsfabrik je Verbindung |
|
||||
| StRS-010 | SyRS-187 | - | docs/reference/security/licensing-system.md, "The single source of truth for all our available licenses is the license-server." |
|
||||
| StRS-013 | SyRS-188 | SwRS-031 | src/centron/Centron.WPF.UI/nlog.config, `maxArchiveFiles="15"` |
|
||||
| StRS-007 | SyRS-189 | - | src/webservice/Centron.Host/AspNetCore/WcfBridge/Interception/Interceptors/ApiCallTelemetryInterceptor.cs |
|
||||
| StRS-003 | SyRS-190 | - | src/backend/Centron.BL/Administration/Logins/Auth/BasicAuthenticator.cs, AuthenticateInternal() ohne Fehlversuchszählung |
|
||||
| StRS-005 | SyRS-191 | SwRS-018 | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, IsModuleAvailable<T>() gegen `CentronCache.Instance.CurrentUserAppRights` |
|
||||
| StRS-099 | SyRS-192 | - | README.md, Abschnitte "Which components to use" und "HTML layouting" |
|
||||
| StRS-148 | SyRS-193 | - | src/backend/Centron.Interfaces/Administration/Settings/ApplicationSettingDefinitions.cs, `InvoiceArchiveActive` |
|
||||
| StRS-068 | SyRS-194 | - | src/backend/Centron.BL/Administration/Logins/Auth/Authenticator.cs, `DateTime.Today >= user.AccountDisabledFromDate` |
|
||||
| StRS-094 | SyRS-195 | - | src/backend/Centron.BL/Sales/Receipts/Invoices/Opos/OposRunBL.cs, `_reportGroupBL.GetParameters(group, loggedInUser.User)` und `_reportDataBL.GetReportForPrinting(report, group, parameters, loggedInUser.User)` |
|
||||
| StRS-009 | SyRS-009 | - | src/backend/Centron.BL/Administration/Logins/Auth/AuthenticatorFactory.cs |
|
||||
| StRS-018 | SyRS-030 | - | src/backend/Centron.BL/Accounts/AccountBL.cs, GetNewAccount(...), `defaultAddress.Data.IsDefault = true; defaultAddress.Data.AddressKind = 1;` |
|
||||
| StRS-021 | SyRS-034 | - | src/backend/Centron.Entities/Entities/Accounts/Account.cs, `AdvertisingNotAllowed`, `AdvertisingNotAllowedInfo` |
|
||||
| StRS-032 | SyRS-045 | - | src/backend/Centron.BL/Administration/Company/NumberGroupEnum.cs |
|
||||
| StRS-065 | SyRS-101 | - | src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs, GetWebAccountTicketFilter(...) mit `combinedFilter.Operands.Add(new BinaryOperator(nameof(TicketListItem.IsOnlyInternalVisible), true, BinaryOperatorType.NotEqual));` |
|
||||
| StRS-079 | SyRS-120 | - | src/backend/Centron.BL/Sales/Receipts/Invoices/Dunning/DunningRunBL.cs, GetPreviewForDunningRun(...), ValidateDunningReports() und ResetDunningRun(int, LoggedInUser) |
|
||||
| StRS-083 | SyRS-123 | - | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Registrierung `DatevOnlineAppModuleController` mit `() => LicenseManager.Instance.HasLicense(LicenseGuids.DatevOnline)` ohne Centron-Alternative |
|
||||
| StRS-088 | SyRS-130 | - | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, Registrierung `MaschineManagementAppModuleController` |
|
||||
| StRS-114 | SyRS-168 | - | src/nexus/CentronNexus/WebCart/ mit CustomperPortalHomePage.razor, CustomerTicketDetailsPage.razor, ReceiptsOverview.razor, ContractsOverview.razor, CustomerPortalPublicDocumentsPage.razor |
|
||||
| StRS-118 | SyRS-130 | - | src/nexus/CentronNexus/ProductionOrderManagement/ mit Components, Model und Pages |
|
||||
| StRS-126 | SyRS-036 | - | src/backend/Centron.BL/Finances/ProductLifecycleBL.cs |
|
||||
| StRS-127 | - | - | src/backend/Centron.Entities/Entities/ProductMatrix/CustomerProductMatrixRatingChangeLog.cs |
|
||||
| StRS-128 | - | - | src/backend/Centron.Interfaces/QM/ |
|
||||
| StRS-129 | SyRS-014 | - | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, `CentronDashboardAppModuleController` mit `Helper.NoRightCheck()` |
|
||||
| StRS-130 | SyRS-146 | - | src/backend/Centron.BL/ToDoArea/IToDoObjectKind.cs und ToDoBL.cs |
|
||||
| StRS-131 | SyRS-017 | - | src/backend/Centron.Entities/Entities/AppointmentRequests/AppointmentProposal.cs |
|
||||
| StRS-132 | SyRS-017 | - | src/backend/Centron.BL/WebLinks/IWebLinkActionHandler.cs mit zwei Umsetzungen |
|
||||
| StRS-133 | - | - | src/backend/Centron.BL/VideoPortal/VideoPortalAssignmentBL.cs mit den vier Methoden und Benutzerbezug |
|
||||
| StRS-134 | - | - | src/backend/Centron.BL/Chats/ChatBL.cs, CreateChat(...) mit `CentronObjectKindNumeric? objectKind` |
|
||||
| StRS-135 | - | - | src/backend/Centron.BL/Tags/TagsBL.cs, AddTicketTag(int, string, LoggedInUser) mit vorheriger Suche über `GetTag(caption, ...)` |
|
||||
| StRS-136 | - | - | src/backend/Centron.BL/Processes/ProcessBL.cs mit den vier generischen Ladefunktionen und dem Schalter `includeStepsandBindings` |
|
||||
| StRS-137 | SyRS-037 | - | SSMS_DB_SCHEMA.sql mit 221 Tabellen des Präfixes `AssetManagement` einschließlich Prüfkonfigurationen, Prüfergebnissen und Sammlerkonfigurationen |
|
||||
| StRS-138 | SyRS-090 | - | src/backend/Centron.BL/TradePool/TradePoolBL.cs, GetTradeArticleList(int, int, string, string, out int, string, TradeArticleFilterOptions) |
|
||||
| StRS-139 | - | - | src/backend/Centron.BL/VoucherManagement/VoucherManagementBL.cs, GetActivedVoucherBarcodes(bool, bool, bool) |
|
||||
| StRS-140 | - | - | src/centron/Centron.WPF.UI/Modules/ModuleRegistration.cs, auskommentierte Registrierung mit dem erläuternden Kommentar |
|
||||
| StRS-141 | SyRS-177 | - | src/backend/Centron.BL/CPra/CPraConnectorBL.cs, GetCPraWebHookLink(...) mit neun Kontextparametern |
|
||||
| StRS-142 | - | - | src/centron/Centron.WPF.UI/Modules/DataExchange/DocSync/ und die Registrierung `DocSyncSettingsAppModuleController` |
|
||||
| StRS-143 | - | - | src/backend/Centron.BL/GUI/UserGridBL.cs |
|
||||
| StRS-144 | SyRS-019 | - | src/backend/Centron.BL/Administration/DataSecurity/DataSecurityBL.cs, DoDeleteContactPersonSocialNetworks(StringBuilder, int) |
|
||||
| StRS-145 | - | - | src/nexus/CentronNexus/Shared/Auth/TicketFilterService.cs, LoadSalesAreas(int) mit der Einschränkung auf `SalesAreaI3DAsString` |
|
||||
|
||||
---
|
||||
|
||||
## 2. Backward-Traceability (StRS ← SyRS / SwRS)
|
||||
|
||||
| StRS-ID | Titel | verfeinert durch SyRS | verfeinert durch SwRS |
|
||||
|---|---|---|---|
|
||||
| StRS-001 | Mandantenfähige Abbildung der eigenen Unternehmensstruktur | SyRS-001, SyRS-186 | SwRS-001 |
|
||||
| StRS-002 | Filialstruktur innerhalb eines Mandanten | SyRS-002, SyRS-186 | — |
|
||||
| StRS-003 | Anmeldung interner Benutzer mit Benutzername und Kennwort | SyRS-005, SyRS-007, SyRS-022, SyRS-023, SyRS-185, SyRS-190 | SwRS-010 |
|
||||
| StRS-004 | Zeitlich und dauerhaft steuerbare Deaktivierung von Benutzerkonten | SyRS-006, SyRS-190 | SwRS-011 |
|
||||
| StRS-005 | Rechtebasierter Zugang zu Fachmodulen | SyRS-010, SyRS-011, SyRS-191 | SwRS-020, SwRS-026, SwRS-129, SwRS-153 |
|
||||
| StRS-006 | Einschränkende Rechte begrenzen die Sicht auf eigene Vorgänge oder die eigene Filiale | SyRS-012 | SwRS-021 |
|
||||
| StRS-007 | Zwei-Faktor-Authentifizierung mit konfigurierbarer Gültigkeitsdauer | SyRS-008, SyRS-189 | SwRS-012 |
|
||||
| StRS-008 | Anmeldung über Microsoft Entra ID (OpenID Connect) | SyRS-009, SyRS-172 | SwRS-013 |
|
||||
| StRS-009 | Anmeldung über Active Directory als Alternative zur lokalen Kennwortprüfung | SyRS-009 | SwRS-013 |
|
||||
| StRS-010 | Lizenzgesteuerter Funktionsumfang | SyRS-005, SyRS-013, SyRS-014, SyRS-025, SyRS-132, SyRS-134, SyRS-187 | SwRS-016, SwRS-023 |
|
||||
| StRS-011 | Zugangstoken für die Anbindung externer Systeme | SyRS-015 | SwRS-014, SwRS-024 |
|
||||
| StRS-012 | Kundenzugang über Webaccounts mit eigenem Rechtesystem | SyRS-016 | SwRS-025 |
|
||||
| StRS-013 | Nachvollziehbarkeit fachlicher Änderungen | SyRS-018, SyRS-023, SyRS-143, SyRS-188 | SwRS-030, SwRS-031, SwRS-042, SwRS-064 |
|
||||
| StRS-014 | Datenschutzgerechte Löschung personenbezogener Daten | SyRS-019, SyRS-151 | SwRS-032 |
|
||||
| StRS-015 | Verwaltung von Kundenzugangsdaten im Passwort-Manager | SyRS-020, SyRS-021, SyRS-144 | SwRS-033, SwRS-034, SwRS-128 |
|
||||
| StRS-016 | Ein Geschäftspartnerstamm mit mehreren Rollen je Partner | SyRS-030, SyRS-124 | SwRS-040 |
|
||||
| StRS-017 | Umschaltbare Führung der Kontenverwaltung zwischen Alt- und Neusystem | SyRS-031 | SwRS-040 |
|
||||
| StRS-018 | Mehrere Adressen und Ansprechpartner je Geschäftspartner | SyRS-030, SyRS-134 | SwRS-041, SwRS-068 |
|
||||
| StRS-019 | CRM-Aktivitäten zur Dokumentation der Kundenkommunikation | SyRS-032 | — |
|
||||
| StRS-020 | Kampagnen und Serienmailings an Geschäftspartner | SyRS-034 | — |
|
||||
| StRS-021 | Auswertung des Werbewiderspruchs beim Kampagnenversand | SyRS-034 | — |
|
||||
| StRS-022 | CRM-Projekte als überspannende Vertriebsvorgänge | SyRS-033, SyRS-108 | SwRS-042 |
|
||||
| StRS-023 | Kundenaudits und Fragebögen | SyRS-035 | — |
|
||||
| StRS-024 | Kundenspezifische Sonderpreise und Preislisten | SyRS-036, SyRS-088, SyRS-090 | SwRS-043 |
|
||||
| StRS-025 | Bankverbindungen und SEPA-Mandate am Geschäftspartner | SyRS-001, SyRS-060, SyRS-122, SyRS-171 | SwRS-044 |
|
||||
| StRS-026 | Dokumentation der beim Kunden installierten Geräte | SyRS-037, SyRS-074, SyRS-109, SyRS-176 | SwRS-045, SwRS-046 |
|
||||
| StRS-027 | Durchgängige Belegkette vom Angebot bis zur Rechnung | SyRS-040, SyRS-056, SyRS-057, SyRS-089 | SwRS-050, SwRS-065, SwRS-069 |
|
||||
| StRS-028 | Belegstatus offen, abgeschlossen und storniert | SyRS-041, SyRS-170 | SwRS-052, SwRS-067 |
|
||||
| StRS-029 | Belege dürfen nur von berechtigten Benutzern der zuständigen Filiale bearbeitet werden | SyRS-040, SyRS-042 | SwRS-053 |
|
||||
| StRS-030 | Versionierung von Belegen mit vollständiger Kopie in Versionstabellen | SyRS-043 | SwRS-054 |
|
||||
| StRS-031 | Optimistische Sperre gegen konkurrierende Belegänderungen | SyRS-044, SyRS-059 | SwRS-055 |
|
||||
| StRS-032 | Getrennte Nummernkreise je Belegart, Mandant und Filiale | SyRS-002, SyRS-033 | SwRS-002, SwRS-056 |
|
||||
| StRS-033 | Lückenlose und kollisionsfreie Vergabe von Belegnummern | SyRS-002, SyRS-033, SyRS-045 | SwRS-056 |
|
||||
| StRS-034 | Zahlungsbedingungen mit Skontostaffel und belegartbezogener Gültigkeit | SyRS-046 | — |
|
||||
| StRS-035 | Mehrwertsteuer mit zeitlicher Gültigkeitskette | SyRS-038, SyRS-047, SyRS-081 | SwRS-057 |
|
||||
| StRS-036 | Belege in Fremdwährung | SyRS-038, SyRS-048 | — |
|
||||
| StRS-037 | Belegvorlagen für wiederkehrende Belege | SyRS-049 | SwRS-058 |
|
||||
| StRS-038 | Provisionsabrechnung für Vertriebsmitarbeiter | SyRS-050 | SwRS-059 |
|
||||
| StRS-039 | Anzahlungsrechnungen und Schlussrechnung mit Anzahlungsverrechnung | SyRS-051 | — |
|
||||
| StRS-040 | Belegausgabe als PDF mit konfigurierbarem Layout | SyRS-052, SyRS-058, SyRS-140 | SwRS-060 |
|
||||
| StRS-041 | Elektronische Rechnung nach ZUGFeRD und XRechnung | SyRS-038, SyRS-041, SyRS-052, SyRS-053, SyRS-123, SyRS-182 | SwRS-061, SwRS-068, SwRS-114 |
|
||||
| StRS-042 | Zweistufiges Freigabewesen für Kundenwarenkörbe | SyRS-054, SyRS-169 | SwRS-062 |
|
||||
| StRS-043 | Import von Projekt- und Sonderpreisen aus Lieferantendateien | SyRS-055 | — |
|
||||
| StRS-044 | Wartungs- und Serviceverträge als eigene Belegart | SyRS-070, SyRS-079, SyRS-104, SyRS-170 | SwRS-070, SwRS-079 |
|
||||
| StRS-045 | Automatische Rechnungsstellung aus Verträgen | SyRS-055, SyRS-071, SyRS-078 | SwRS-071 |
|
||||
| StRS-046 | Abrechnungsintervalle mit Vielfachen und Mehrfachperioden je Rechnung | SyRS-072 | SwRS-072 |
|
||||
| StRS-047 | Kontingentverwaltung und Kontingentgrenzen im Vertrag | SyRS-073 | SwRS-073 |
|
||||
| StRS-048 | Zählerbasierte Abrechnung von Druck- und Kopiergeräten | SyRS-037, SyRS-074 | SwRS-074 |
|
||||
| StRS-049 | Nutzungsabhängige Abrechnung anhand von Daten eines externen RMM-Systems | SyRS-071, SyRS-072, SyRS-075, SyRS-176 | SwRS-075, SwRS-077 |
|
||||
| StRS-050 | Vereinfachte Abrechnung erfasster Ticketzeiten | SyRS-076 | SwRS-076 |
|
||||
| StRS-051 | Pauschalabrechnung von Projekten | SyRS-077 | — |
|
||||
| StRS-052 | Auswertung von Verträgen und Managed-Service-Beständen | SyRS-078 | SwRS-078 |
|
||||
| StRS-053 | Artikelstamm mit Preisen, Einheiten und Warengruppenzuordnung | SyRS-036, SyRS-080 | SwRS-080, SwRS-087 |
|
||||
| StRS-054 | Warengruppen als Ordnungs- und Steuerungsmerkmal | SyRS-047, SyRS-080, SyRS-081 | — |
|
||||
| StRS-055 | Bestandsführung über mehrere Lager, Lagerbereiche und Lagerplätze | SyRS-082, SyRS-083, SyRS-084, SyRS-086, SyRS-109 | SwRS-081, SwRS-088 |
|
||||
| StRS-056 | Inventur mit Bestandsaufnahme und Differenzbewertung | SyRS-083 | SwRS-084 |
|
||||
| StRS-057 | Kommissionierung von Aufträgen | SyRS-084 | SwRS-085 |
|
||||
| StRS-058 | Lieferantenbelegkette von der Anfrage bis zur Lieferantengutschrift | SyRS-085 | — |
|
||||
| StRS-059 | Bestellvorschlagsliste | SyRS-086 | — |
|
||||
| StRS-060 | Elektronischer Belegaustausch mit Distributoren | SyRS-087, SyRS-177 | SwRS-082 |
|
||||
| StRS-061 | Vergleich von Einkaufspreisen über mehrere externe Preisquellen | SyRS-036, SyRS-088, SyRS-090 | SwRS-043, SwRS-083, SwRS-086 |
|
||||
| StRS-062 | Versandabwicklung über Paketdienstleister | SyRS-089 | — |
|
||||
| StRS-063 | Artikelimport aus Lieferanten- und Katalogdaten | SyRS-090 | SwRS-086 |
|
||||
| StRS-064 | Tickets als zentraler Servicevorgang | SyRS-029, SyRS-100, SyRS-101, SyRS-111, SyRS-146, SyRS-173 | SwRS-100 |
|
||||
| StRS-065 | Abgestufte Ticketsichtbarkeit für Mitarbeiter und Kundenkontakte | SyRS-012 | SwRS-021, SwRS-022 |
|
||||
| StRS-066 | Zeiterfassung auf Tickets als Grundlage der Leistungsabrechnung | SyRS-073, SyRS-102, SyRS-131, SyRS-132 | SwRS-101 |
|
||||
| StRS-067 | Schutz erfasster Zeiten vor unberechtigter Änderung und Löschung | SyRS-076, SyRS-103 | SwRS-102, SwRS-108 |
|
||||
| StRS-068 | Fälligkeitsberechnung aus der Ticketpriorität unter Berücksichtigung von Geschäftszeiten | SyRS-038, SyRS-104, SyRS-194 | SwRS-103 |
|
||||
| StRS-069 | Automatische Eskalation überfälliger Vorgänge in drei Stufen | SyRS-105 | SwRS-104 |
|
||||
| StRS-070 | Checklisten als Arbeitsanweisung und Abschlussvoraussetzung | SyRS-106, SyRS-107 | SwRS-105 |
|
||||
| StRS-071 | Ticketvorlagen und mehrstufige Ticketprozesse | SyRS-107 | — |
|
||||
| StRS-072 | Projekt- und Aufgabenverwaltung für Serviceprojekte | SyRS-014, SyRS-108 | SwRS-019 |
|
||||
| StRS-073 | RMA- und Werkstattabwicklung mit Ein- und Rückversand | SyRS-109 | SwRS-109 |
|
||||
| StRS-074 | Kundenformulare zur strukturierten Datenerhebung | SyRS-035, SyRS-110, SyRS-189 | SwRS-106 |
|
||||
| StRS-075 | E-Mail-Integration für Tickets | SyRS-028, SyRS-039, SyRS-111 | SwRS-135, SwRS-136 |
|
||||
| StRS-076 | Erwartete Ereignisse zur Überwachung wiederkehrender Kundenmeldungen | SyRS-112 | — |
|
||||
| StRS-077 | KI-Unterstützung bei Ticketbearbeitung und Angebotserstellung | SyRS-113 | SwRS-107 |
|
||||
| StRS-078 | Mahnwesen mit drei Mahnstufen | SyRS-046, SyRS-120, SyRS-121 | SwRS-110 |
|
||||
| StRS-079 | Mahnvorschau und Zurücksetzen eines Mahnlaufs | SyRS-120 | — |
|
||||
| StRS-080 | Offene-Posten-Auswertung und Zahlungseingang | SyRS-121, SyRS-126 | SwRS-112, SwRS-113 |
|
||||
| StRS-081 | SEPA-Zahlungsverkehr mit Lastschrift und Überweisung | SyRS-001, SyRS-048, SyRS-060, SyRS-122 | SwRS-044, SwRS-111, SwRS-113, SwRS-115 |
|
||||
| StRS-082 | Buchhaltungsexport an externe Finanzbuchhaltung | SyRS-046, SyRS-053, SyRS-123 | SwRS-114 |
|
||||
| StRS-083 | Belegtransfer an DATEV Unternehmen online | SyRS-123 | — |
|
||||
| StRS-084 | Kontenrahmen und Kontenzuordnung | SyRS-124, SyRS-125 | — |
|
||||
| StRS-085 | Kostenstellen und Kostenträger | SyRS-125 | — |
|
||||
| StRS-086 | Anbindung des Online-Bankings zum Abgleich von Kontoumsätzen | SyRS-126 | — |
|
||||
| StRS-087 | Produktionsaufträge mit Positionen und Protokoll | SyRS-011, SyRS-130 | SwRS-089 |
|
||||
| StRS-088 | Maschinenverwaltung als Produktionsressource | SyRS-130 | — |
|
||||
| StRS-089 | Auslastung und Leistungsnachweise von Mitarbeitern | SyRS-131 | — |
|
||||
| StRS-090 | Tagesplanung "Mein Tag" mit automatischer Übernahme erfasster Zeiten | SyRS-102, SyRS-132 | — |
|
||||
| StRS-091 | Kalender mit Abgleich gegen Microsoft Exchange | SyRS-133 | — |
|
||||
| StRS-092 | Telefonieanbindung mit Anrufprotokoll und Anrufererkennung | SyRS-134 | — |
|
||||
| StRS-093 | Berichtswesen mit zentral verwalteten Berichtsvorlagen | SyRS-052, SyRS-058, SyRS-140, SyRS-195 | — |
|
||||
| StRS-094 | Zeitgesteuerte Berichtserstellung und -verteilung über den Reportserver | SyRS-140, SyRS-195 | — |
|
||||
| StRS-095 | Dokumentenablage mit Verzeichnisstruktur je Geschäftsobjekt | SyRS-141, SyRS-142, SyRS-181, SyRS-193 | — |
|
||||
| StRS-096 | Objektübergreifende Volltextsuche | SyRS-141, SyRS-142 | SwRS-120 |
|
||||
| StRS-097 | Massenänderung von Beleg-, Artikel- und Kontendaten | SyRS-143 | SwRS-123 |
|
||||
| StRS-098 | Kundenindividuelle Zusatzfelder ohne Codeänderung | SyRS-021, SyRS-144 | — |
|
||||
| StRS-099 | Zweisprachige Oberfläche mit Deutsch als Leitsprache | SyRS-145, SyRS-192 | SwRS-139 |
|
||||
| StRS-100 | Benachrichtigungen an Mitarbeiter über Vorgangsänderungen | SyRS-146 | SwRS-125 |
|
||||
| StRS-101 | Werkzeugintegration für externe Anwendungen | SyRS-039, SyRS-147 | SwRS-136 |
|
||||
| StRS-102 | Automatisierte Datenbankaktualisierung beim Programmstart | SyRS-148 | SwRS-035, SwRS-039, SwRS-121, SwRS-151 |
|
||||
| StRS-103 | Direkter Datenbankzugriff für Administratoren | SyRS-149 | — |
|
||||
| StRS-104 | Automatisierte Hintergrundverarbeitung mit zentraler Steuerung | SyRS-079, SyRS-133, SyRS-141, SyRS-150, SyRS-151, SyRS-164, SyRS-180 | SwRS-122, SwRS-148, SwRS-149 |
|
||||
| StRS-105 | Nutzungserfassung für Abrechnung und Produktsteuerung | SyRS-113, SyRS-151, SyRS-194 | SwRS-124 |
|
||||
| StRS-106 | Wahlweiser Betrieb des Windows-Clients mit direktem Datenbankzugriff oder über den Webservice | SyRS-004, SyRS-160, SyRS-163 | SwRS-003, SwRS-130 |
|
||||
| StRS-107 | Installation und Aktualisierung des Windows-Clients | SyRS-161, SyRS-178 | — |
|
||||
| StRS-108 | Betrieb des Webservice als Windows-Dienst, Konsolenanwendung oder Container | SyRS-003, SyRS-162, SyRS-185 | — |
|
||||
| StRS-109 | Verwaltung mehrerer Verbindungen und Umgebungen | SyRS-163 | — |
|
||||
| StRS-110 | Betriebsprotokollierung mit Archivierung | SyRS-164, SyRS-165, SyRS-188 | — |
|
||||
| StRS-111 | Diagnose von Netzwerk- und Antwortzeitproblemen | SyRS-017, SyRS-165 | — |
|
||||
| StRS-112 | Kundenindividuelles Erscheinungsbild | SyRS-166, SyRS-192 | — |
|
||||
| StRS-113 | Weboberfläche c-entron Nexus für Mitarbeiter | SyRS-026, SyRS-032, SyRS-146, SyRS-166, SyRS-167, SyRS-168, SyRS-192 | SwRS-028, SwRS-134, SwRS-137, SwRS-155 |
|
||||
| StRS-114 | Kundenportal mit Tickets, Belegen, Verträgen und Dokumenten | SyRS-016, SyRS-026, SyRS-166, SyRS-168 | SwRS-025, SwRS-028 |
|
||||
| StRS-115 | Kundenbestellung über den WebCart | SyRS-054, SyRS-169 | SwRS-062 |
|
||||
| StRS-116 | Belegeinsicht und Rückmeldung des Kunden im Web | SyRS-170 | — |
|
||||
| StRS-117 | Digitale Bestätigung und Unterzeichnung von Dokumenten | SyRS-171, SyRS-182, SyRS-189 | — |
|
||||
| StRS-118 | Produktionsauftragsbearbeitung im Webportal | SyRS-130 | — |
|
||||
| StRS-119 | Outlook-Add-In für Ticket- und Belegzugriff aus der E-Mail heraus | SyRS-027, SyRS-168, SyRS-172 | SwRS-138 |
|
||||
| StRS-120 | Mobile Nutzung durch Servicetechniker | SyRS-173 | — |
|
||||
| StRS-121 | Umfassende Integrationsschnittstelle für eigene und fremde Anwendungen | SyRS-015, SyRS-017, SyRS-024, SyRS-160, SyRS-174, SyRS-175 | SwRS-005, SwRS-036, SwRS-127, SwRS-131, SwRS-155 |
|
||||
| StRS-122 | Ressourcenorientierte REST-API als Nachfolgeschnittstelle | SyRS-024, SyRS-025, SyRS-175 | SwRS-027, SwRS-132, SwRS-155 |
|
||||
| StRS-123 | Schnittstelle für Monitoring- und RMM-Systeme | SyRS-017, SyRS-075, SyRS-112, SyRS-176, SyRS-177 | SwRS-075, SwRS-133 |
|
||||
| StRS-124 | Anbindung weiterer Fremdsysteme des Systemhausgeschäfts | SyRS-177 | — |
|
||||
| StRS-125 | Automatisierte Qualitätssicherung vor der Auslieferung | SyRS-004, SyRS-161, SyRS-178, SyRS-179 | SwRS-140, SwRS-144, SwRS-145, SwRS-147, SwRS-150, SwRS-154 |
|
||||
| StRS-126 | Verwaltung von Softwarelizenzen des Kunden (Produkt-Lifecycle) | — | — |
|
||||
| StRS-127 | Produktmatrix zur Bewertung des Kundenpotenzials | — | — |
|
||||
| StRS-128 | Qualitätsmanagementmodul | — | — |
|
||||
| StRS-129 | Persönliches Dashboard mit konfigurierbaren Kacheln | — | — |
|
||||
| StRS-130 | Persönliche Aufgabenliste | — | — |
|
||||
| StRS-131 | Terminanfragen mit Terminvorschlägen | — | — |
|
||||
| StRS-132 | Nachverfolgbare Kurzverweise für Kundenkommunikation | — | — |
|
||||
| StRS-133 | Videoportal für Anleitungen und Schulung | — | — |
|
||||
| StRS-134 | Interne Chats mit Objektbezug | — | — |
|
||||
| StRS-135 | Schlagworte an Tickets | — | — |
|
||||
| StRS-136 | Vorgangsübergreifende Prozesse mit Schritten und Bindungen | — | — |
|
||||
| StRS-137 | IT-Dokumentation und Asset-Management der überwachten Systeme | SyRS-184 | SwRS-146 |
|
||||
| StRS-138 | Handelsplattform für Artikeldaten Dritter | — | — |
|
||||
| StRS-139 | Gutscheinverwaltung | — | — |
|
||||
| StRS-140 | Reisekostenabrechnung | — | — |
|
||||
| StRS-141 | Anbindung eines externen Ticketsystems über Webhooks | — | — |
|
||||
| StRS-142 | Dokumentensynchronisation mit externen Ablagen | — | — |
|
||||
| StRS-143 | Anpassbare Listenansichten je Benutzer | — | — |
|
||||
| StRS-144 | Soziale Netzwerke am Geschäftspartner | — | — |
|
||||
| StRS-145 | Abteilungs- und Verkaufsgebietsstruktur | — | — |
|
||||
| StRS-146 | Verfügbarkeit des Gesamtsystems | SyRS-180 | — |
|
||||
| StRS-147 | Datensicherung und Wiederherstellung | SyRS-181 | — |
|
||||
| StRS-148 | Aufbewahrungsfristen und Unveränderbarkeit steuerlich relevanter Belege | SyRS-182, SyRS-193 | — |
|
||||
| StRS-149 | Mengengerüst und Antwortzeiterwartungen | SyRS-183 | — |
|
||||
| StRS-150 | Abgrenzung zur Vorgängeranwendung c-entron classic | SyRS-184 | SwRS-049 |
|
||||
|
||||
---
|
||||
|
||||
## 3. Hinweis zu den 19 nicht verfeinerten Stakeholder-Anforderungen
|
||||
|
||||
Die Anforderungen StRS-126 bis StRS-145 (ohne StRS-137, das über SyRS-037 verfeinert ist) beschreiben Fachmodule, die im Rahmen dieses Laufs nur auf Stakeholder-Ebene erfasst wurden. Sie erfüllen damit die geforderte Mindestabdeckung ihres Moduls, sind aber nicht auf System- und Softwareebene ausgearbeitet. Der Abschnitt "Bekannte Lücken" im `Analysebericht.md` führt sie als Nachschlagbedarf für eine Folge-Iteration.
|
||||
+205
@@ -0,0 +1,205 @@
|
||||
# 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-26T13:22:51.5854176+02:00
|
||||
- **Endzeit:** 2026-08-26T15:42:30.6750061+02:00
|
||||
- **Dauer gesamt:** 2:19:39 (`duration_ms` 2:19:37; API: 2:08:14)
|
||||
— **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:** 4.4.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` 116.143.343 Tokens (99.99 %), `claude-haiku-4-5-20251001` 6.967 Tokens (0.01 %)
|
||||
- **Kontrolle Modell:** bestanden – ausschließlich das angeforderte Modell plus Haiku als zulässiger interner Hilfsaufruf
|
||||
- **Effort:** `max` (per `--effort max` gesetzt)
|
||||
- **Laufverzeichnis-ID:** `v4.4.0-fcdf`
|
||||
- **Ablage:** `Iteration 3/claude-opus-5/solo/max/`
|
||||
- **Parallele Läufe:** **ja** – zeitgleich liefen:
|
||||
- `Iteration 3/claude-opus-5/solo/max/02_Lauf_2026-08-26_132237_v4.4.0-37c5`
|
||||
- `Iteration 3/claude-opus-5/solo/max/02_Lauf_2026-08-26_132237_v4.4.0-a8f5`
|
||||
- `Iteration 3/claude-sonnet-5/builtin/high/02_Lauf_2026-08-26_125032_v4.4.0-4048`
|
||||
- `Iteration 3/claude-sonnet-5/builtin/high/02_Lauf_2026-08-26_125032_v4.4.0-f8b4`
|
||||
- `Iteration 3/claude-sonnet-5/builtin/high/02_Lauf_2026-08-26_125032_v4.4.0-fb24`
|
||||
|
||||
Die Zeitangaben dieses Laufs sind daher **nicht** für Laufzeitvergleiche zu verwenden. Tokenverbrauch, Anforderungszahl, Belegkennzahlen und Denials bleiben unverzerrt.
|
||||
- **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 | 526 |
|
||||
| Output-Tokens | 663.248 (davon 51.251 Thinking-Tokens) |
|
||||
| Cache-Write-Tokens | 1.101.913 |
|
||||
| Cache-Read-Tokens | 113.383.810 |
|
||||
| Agent-Turns | 371 |
|
||||
|
||||
### Gesamtlauf inkl. Subagenten (`modelUsage`, abrechnungsrelevant)
|
||||
| Messgröße | `claude-opus-5` | `claude-haiku-4-5-20251001` | Summe |
|
||||
|---|---:|---:|---:|
|
||||
| Input-Tokens | 2.663 | 6.943 | 9.606 |
|
||||
| Output-Tokens | 678.979 | 24 | 679.003 |
|
||||
| Cache-Write-Tokens | 1.111.636 | 0 | 1.111.636 |
|
||||
| Cache-Read-Tokens | 114.350.065 | 0 | 114.350.065 |
|
||||
| **Tokens gesamt** | **116.143.343** | **6.967** | **116.150.310** |
|
||||
|
||||
**Tokens gesamt: 116.150.310** — 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 | 150 | 33,6 % |
|
||||
| SyRS | 155 | 34,8 % |
|
||||
| SwRS | 141 | 31,6 % |
|
||||
| **Gesamt** | **446** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 217 | 48,7 % |
|
||||
| Sicherheit | 69 | 15,5 % |
|
||||
| Daten | 69 | 15,5 % |
|
||||
| Schnittstelle | 46 | 10,3 % |
|
||||
| nicht-funktional | 45 | 10,1 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 1.255 |
|
||||
| davon `PRIMÄR` | 1.067 (85,0 %) |
|
||||
| davon `SEKUNDÄR` | 111 (8,8 %) |
|
||||
| davon `KONTEXT` | 77 (6,1 %) |
|
||||
| Belege je Anforderung (Median) | 3,0 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 438 (98,2 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 414 | 92,8 % |
|
||||
| workaround | 17 | 3,8 % |
|
||||
| sonderfall | 1 | 0,2 % |
|
||||
| veraltet | 14 | 3,1 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 410 | 91,9 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 36 | 8,1 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 141 | 31,6 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 181 | 40,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** (139 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 446 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 446 von 446 mit Tracelinks (100,0 %) |
|
||||
|
||||
## Ergebnis
|
||||
- **Status:** erfolgreich (`is_error` = false, `subtype` = `success`, `stop_reason` = `end_turn`, `terminal_reason` = `completed`)
|
||||
- **Session-ID:** `bf2feb1f-c832-4c9d-ac00-a6c1fea64ced`
|
||||
- **Permission-Denials:** 5 (2 × `Bash`, 1 × `Grep`, 2 × `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` | 106.543 B |
|
||||
| `Glossar.md` | 16.775 B |
|
||||
| `Hypothesen.md` | 15.440 B |
|
||||
| `StRS.md` | 305.223 B |
|
||||
| `SwRS.md` | 281.146 B |
|
||||
| `SyRS.md` | 309.123 B |
|
||||
| `Traceability.md` | 51.938 B |
|
||||
|
||||
- **Root unverändert:** ja (zeilenendennormalisiert verglichen).
|
||||
- **Abschlusstext des Agenten:** siehe `RawResult.json` (`result`)
|
||||
|
||||
## Anmerkungen/Auffälligkeiten
|
||||
|
||||
**1. Iteration 3 – Snapshot mit DB-Schema.** `SSMS_DB_SCHEMA.sql` (3.266.626 B, 76.793 Zeilen,
|
||||
1.558 Tabellen, 182 Views, 63 Prozeduren, 30 Funktionen, 134 Fremdschlüssel; SHA-256
|
||||
`ED7F2125…1FA8DB`) ist seit Commit `f349d189` Bestandteil des Untersuchungsgegenstands. Läufe der
|
||||
Iteration 2 hatten die Datei nicht – beide Iterationen sind **nicht poolbar**.
|
||||
|
||||
**2. Parallelbetrieb – Zeitangaben unbrauchbar, Verbrauchsgrößen gültig.** Wanduhrzeit,
|
||||
`duration_ms` und `duration_api_ms` sind verzerrt; Tokenverbrauch, Anforderungszahl,
|
||||
Belegkennzahlen und Denials nicht. Einziger gültiger Laufzeitmesspunkt aller drei Iterationen
|
||||
bleibt der serielle Lauf `084301_v4.2.0-d6f9` mit 45:04.
|
||||
|
||||
**3. CLI 2.1.246** statt der gegen 2.1.245 verifizierten Fassung.
|
||||
|
||||
**4. Ertragsstärkster Lauf der gesamten Versuchsreihe – und der erste vollständig regelkonforme
|
||||
unter Prompt-Version 02.** 446 Anforderungen, 1.255 Belege, **Median 3,0 Belege je Anforderung**,
|
||||
98,2 % mit Primärbeleg, 139 risikorelevante Anforderungen allesamt gedeckt, Tracelinks bei 100 %.
|
||||
Alle fünf Prüfkriterien der Regelkonformität sind erfüllt.
|
||||
|
||||
**5. Die Belegdichte steigt mit dem Denkaufwand.** Median 1,0 über 44 Läufe auf `high`, 2,0 bei
|
||||
`a8f5`, 3,0 hier. Der Befund „45,9 % aller Anforderungen trugen genau einen Beleg", der Anlass für
|
||||
Prompt-Version 02 war und sich unter Version 02 auf `high` sogar verschärft hatte, löst sich damit
|
||||
über den Effort auf – nicht über die Prompt-Formulierung.
|
||||
|
||||
**6. Die Anti-Korrelation zwischen Menge und Qualität kippt.** Über die zehn `solo`/`high`-Läufe
|
||||
liefen Anforderungszahl und Primärbelegquote gegeneinander (Pearson −0,63, Spearman −0,70). Die
|
||||
beiden `max`-Läufe liefern beides zugleich: 380 Anforderungen bei 95,5 % und 446 bei 98,2 %. Der
|
||||
Zielkonflikt war also kein Gesetz, sondern Folge zu knappen Aufwands.
|
||||
|
||||
**7. Ausgewogenste Ebenenverteilung der Reihe:** 150 StRS / 155 SyRS / 141 SwRS. Alle drei Ebenen
|
||||
tragen etwa ein Drittel – die Strukturstreuung, die auf `high` von 92,7 % StRS bis 89,4 % SwRS
|
||||
reichte, tritt hier nicht auf.
|
||||
|
||||
**8. Der Preis:** 116,2 Mio. Tokens und 371 Turns – 260.000 Tokens je Anforderung gegenüber
|
||||
54.000 bei `a8f5` und rund 68.000 bei `3ef5`. `spawned` = 0, Modellkontrolle bestanden.
|
||||
Fünf Denials, keiner betraf `Task`/`Agent`/`Workflow`.
|
||||
+1
File diff suppressed because one or more lines are too long
+9285
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 | 150 | 33,6 % |
|
||||
| SyRS | 155 | 34,8 % |
|
||||
| SwRS | 141 | 31,6 % |
|
||||
| **Gesamt** | **446** | 100 % |
|
||||
|
||||
### Anforderungstypen
|
||||
|
||||
| Typ | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| funktional | 217 | 48,7 % |
|
||||
| Sicherheit | 69 | 15,5 % |
|
||||
| Daten | 69 | 15,5 % |
|
||||
| Schnittstelle | 46 | 10,3 % |
|
||||
| nicht-funktional | 45 | 10,1 % |
|
||||
|
||||
### Belegqualität
|
||||
|
||||
| Messgröße | Wert |
|
||||
|---|---:|
|
||||
| Belege gesamt | 1.255 |
|
||||
| davon `PRIMÄR` | 1.067 (85,0 %) |
|
||||
| davon `SEKUNDÄR` | 111 (8,8 %) |
|
||||
| davon `KONTEXT` | 77 (6,1 %) |
|
||||
| Belege je Anforderung (Median) | 3,0 |
|
||||
| Anforderungen mit mindestens einem `PRIMÄR`-Beleg | 438 (98,2 %) |
|
||||
|
||||
### Übernahmewürdigkeit
|
||||
|
||||
| Einstufung | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| übernehmen | 414 | 92,8 % |
|
||||
| workaround | 17 | 3,8 % |
|
||||
| sonderfall | 1 | 0,2 % |
|
||||
| veraltet | 14 | 3,1 % |
|
||||
|
||||
### Status
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|---|---:|---:|
|
||||
| belegt | 410 | 91,9 % |
|
||||
| als `HYPOTHESE` gekennzeichnet | 36 | 8,1 % |
|
||||
| als Workaround vermerkt | 0 | 0,0 % |
|
||||
| Konsolidierungskandidaten | 141 | 31,6 % |
|
||||
| mit ISO-25010-Qualitätsmerkmal | 181 | 40,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** (139 risikorelevante Anforderungen, alle gedeckt) |
|
||||
| **Verifizierbarkeit** – jede Anforderung mit Prüfidee oder Akzeptanzkriterium | **erfüllt** |
|
||||
| **Übernahmewürdigkeit** – Einstufung für die Migrationsperspektive | **erfüllt** (alle 446 Anforderungen eingestuft) |
|
||||
| **Traceability** – Verknüpfung zwischen den Ebenen | 446 von 446 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\max\02_Lauf_2026-08-26_132237_v4.4.0-fcdf\Ergebnisse\`.
|
||||
Verändere keine Dateien im Arbeitsverzeichnis (der analysierten Codebasis).
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T15:42:30.6750061+02:00
|
||||
+1
@@ -0,0 +1 @@
|
||||
2026-08-26T13:22:51.5854176+02:00
|
||||
Reference in New Issue
Block a user