SE1_Team_1/Pflichtenheft_GruppeA.md

29 KiB
Raw Permalink Blame History

title subtitle author version lang toc toc-depth numbersections papersize geometry fontsize linestretch mainfont sansfont monofont header-includes
Pflichtenheft Desktop-Fakturierungsanwendung — Gruppe A: Prozess / Dokumentenzyklus
Team 1 Gruppe A
1.2 de-DE true 3 false a4 margin=3cm 12pt 1.5 Times New Roman Arial DejaVu Sans Mono \usepackage{fancyhdr} \usepackage{lastpage} \pagestyle{fancy} \fancyhf{} \fancyhead[L]{Team 1 Gruppe A} \fancyhead[C]{Pflichtenheft} \fancyhead[R]{Version 1.2} \fancyfoot[C]{\thepage\ /\ \pageref{LastPage}} \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0pt}

\newpage

+-------------------------+-------------------------+-------------------------+ | Autor | Prüfer | Freigebender | +=========================+=========================+=========================+ | Strubel, Lucas | Prof. Dr. Marmitt, Gerd | Prof. Dr. Marmitt, Gerd | +-------------------------+-------------------------+-------------------------+ | Gruppe A (Prozess) | Modulverantwortlicher | Modulverantwortlicher | +-------------------------+-------------------------+-------------------------+ | 13.06.2026 | 13.06.2026 | 13.06.2026 | +-------------------------+-------------------------+-------------------------+

Freigabevermerk: Dieses Dokument ist nach Prüfung und Freigabe durch den Modulverantwortlichen verbindliche Spezifikationsgrundlage für die Implementierung und den Modultest der Komponente Prozess / Dokumentenzyklus.

Dokumentenhistorie

Version Datum Autor Grund der Änderung
1.0 09.06.2026 Lucas Strubel Initiale Erstellung
1.1 13.06.2026 Lucas Strubel Einfügen der UML-Diagramme (Klassen- und Sequenzdiagramm)
1.2 15.06.2026 Lucas Strubel Modultestplan in eigenständiges Dokument (Modultestplan.md) ausgegliedert

\newpage

1. Einleitung

1.1 Zweck des Dokuments

Dieses Pflichtenheft (System Requirements Specification, SRS) beschreibt aus Sicht des Auftragnehmers, wie die Komponente Prozess / Dokumentenzyklus der Desktop-Fakturierungsanwendung die Anforderungen des Lastenhefts (v1.3) erfüllt. Es konkretisiert die fachlichen Anforderungen in testbare Systemanforderungen und dient als direkte Grundlage für Design, Implementierung sowie den Komponenten- bzw. Modultestplan (eigenständiges Dokument Modultestplan.md).

1.2 Ziel

Ziel dieses Pflichtenhefts ist die vollständige und testbare Spezifikation der Erzeugung, Verknüpfung und Statusführung der vier kaufmännischen Belegtypen (Angebot, Auftragsbestätigung, Lieferschein, Rechnung), der geführten Rechnungserstellung sowie der Rechnungsstornierung.

1.3 Geltungsbereich

Dieses Dokument gilt für die Komponente Gruppe A — Prozess / Dokumentenzyklus. Die Gesamtanwendung wird arbeitsteilig in vier Komponenten entwickelt; jede Untergruppe pflegt ein eigenes Pflichtenheft:

Gruppe Komponente Eigenes Pflichtenheft
A Prozess / Dokumentenzyklus dieses Dokument
B Verwaltung von Produkten separat
C Verwaltung von Kunden separat
D Programmoberfläche separat

Die Komponente A nutzt Kunden (Gruppe C) und Produkte (Gruppe B) lesend über definierte interne Schnittstellen (Kapitel 6.2) und wird über die Programmoberfläche (Gruppe D) bedient. Stammdatenpflege (Anlegen/Ändern/Löschen von Kunden und Produkten) ist nicht Gegenstand dieses Dokuments.

1.4 Definitionen und Abkürzungen

Fachbegriffe (Angebot, Auftragsbestätigung, Lieferschein, Rechnung, Dokumentenzyklus, GoBD, DSGVO, …) sind im Glossar des Lastenhefts (§ 8.1) definiert und gelten unverändert. Dokumentspezifische Abkürzungen siehe Kapitel 11.

1.5 Referenzen

  • Lastenheft „Desktop-Fakturierungsanwendung", Team 1, Version 1.3, 09.06.2026
  • Project Charter, Team 1, Version 1.3, 14.05.2026
  • § 14 UStG — Pflichtangaben einer Rechnung
  • GoBD — Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern
  • DSGVO — EU-Verordnung 2016/679
  • Vorlesungsunterlagen Software Engineering 1 (SoSe 2026), Foliensatz „Lasten- und Pflichtenheft"

2. Systemüberblick

2.1 Kurzbeschreibung

Die Anwendung ist eine Einzelplatz-Stand-Alone-Desktop-Anwendung mit lokaler Datenhaltung (keine Cloud, kein Server). Die Bedienung erfolgt über eine minimale grafische Benutzeroberfläche (Gruppe D), über die die Funktionalität des Dokumentenzyklus zugänglich gemacht wird. Erzeugte Belege werden lokal als PDF exportiert und können optional gedruckt oder per Standard-E-Mail-Client versendet werden.

Die Komponente Prozess / Dokumentenzyklus stellt die fachliche Kernlogik bereit: Belegerzeugung, automatische Summen- und Steuerberechnung, Vergabe eindeutiger Belegnummern, Verknüpfung aufeinanderfolgender Belege, Statusführung und Stornierung.

2.2 Abgrenzung (Was gehört dazu / was nicht)

Im Umfang dieser Komponente:

  • Erstellen von Angebot, Auftragsbestätigung, Lieferschein, Rechnung
  • Übernahme von Daten aus Vorgängerbelegen (Dokumentenzyklus-Konsistenz)
  • Automatische Berechnung von Netto-, Steuer- und Bruttobeträgen (Snapshot-Prinzip)
  • Vergabe fortlaufender, lückenloser Belegnummern
  • Geführte (schrittweise) Rechnungserstellung
  • Statusführung und Stornierung von Rechnungen
  • PDF-Export der Belege

Nicht im Umfang dieser Komponente:

  • Anlegen/Ändern/Löschen von Kunden (Gruppe C) und Produkten (Gruppe B)
  • Aufbau und Layout der GUI (Gruppe D)
  • E-Rechnungsformate (ZUGFeRD/XRechnung), Mahnwesen, Buchhaltung (LH-Nichtziele)

2.3 Grobe Systemfunktionen

Erstellen von Belegen → Berechnen der Summen → Vergeben der Belegnummer → Persistieren → PDF-Export → Statuswechsel (inkl. Storno).

3. Stakeholder und Kontext

Stakeholder und Systemkontext sind im Lastenheft (§ 2, § 3) beschrieben und gelten unverändert. Für diese Komponente ist der maßgebliche Akteur:

  • Anwender:in — natürliche Person (Selbstständige:r, Freiberufler:in, Kleinstunternehmer:in), die den Dokumentenzyklus eigenverantwortlich durchführt.

Angrenzende Systeme/Komponenten: lokales Dateisystem (Persistenz, PDF), optional Drucker und Standard-E-Mail-Client sowie intern die Komponenten Kundenverwaltung (C) und Produktverwaltung (B).

4. Funktionale Anforderungen

Die Anforderungen sind nach Belegtyp gruppiert und mit den Satzschablonen des Foliensatzes formuliert. Jede Anforderung ist eindeutig, vollständig, widerspruchsfrei und verifizierbar.

Belegnummern (übergreifend, GR-01): Belegnummern sind eindeutig und werden vom System generiert (nicht durch den Anwender eingegeben). Sie werden als String geführt, nicht als int, weil die Nummern ein festes Format mit führenden Nullen und Präfix besitzen (z. B. R-2026-000124); ein ganzzahliger Typ würde führende Nullen verlieren. Pro Belegtyp wird ein eigener, fortlaufender und lückenloser Zähler auf Basis der höchsten bisher vergebenen Nummer geführt. Präfixe: AN- (Angebot), AB- (Auftragsbestätigung), LS- (Lieferschein), R- (Rechnung).

4.1 Angebot (aus BA-09)

F-01: Das System MUSS es der Anwender:in ERMÖGLICHEN, ein Angebot für einen existierenden Kunden mit mindestens einer Position aus dem Produktkatalog zu erstellen.

F-02: WENN ein Angebot gespeichert wird, DANN MUSS das System eine eindeutige Angebotsnummer (Präfix AN-), das Erstelldatum und ein Gültigkeitsdatum setzen.

F-03: Das System MUSS für jedes Angebot die Netto-, Steuer- und Bruttosumme automatisch aus den Positionen berechnen (siehe F-23).

F-04: Das System MUSS es ERMÖGLICHEN, ein gespeichertes Angebot als PDF in das lokale Dateisystem zu exportieren.

4.2 Auftragsbestätigung (aus BA-10)

F-05: Das System MUSS es ERMÖGLICHEN, eine Auftragsbestätigung zu erstellen, wobei Kunde, Positionen und Mengen aus einem vorhandenen Angebot übernommen werden können (siehe F-22).

F-06: WENN eine Auftragsbestätigung gespeichert wird, DANN MUSS das System eine eindeutige AB-Nummer (Präfix AB-) vergeben und — sofern aus einem Angebot erzeugt — eine Rückreferenz auf das Angebot speichern.

F-07: Das System MUSS es ERMÖGLICHEN, eine Auftragsbestätigung als PDF zu exportieren.

4.3 Lieferschein (aus BA-11)

F-08: Das System MUSS es ERMÖGLICHEN, einen Lieferschein mit Lieferdatum, Positionen und Liefermengen zu erstellen; Kunde und Positionen können aus einer Auftragsbestätigung übernommen werden (siehe F-22).

F-09: WENN ein Lieferschein gespeichert wird, DANN MUSS das System eine eindeutige Lieferscheinnummer (Präfix LS-) vergeben und — sofern aus einer Auftragsbestätigung erzeugt — eine Rückreferenz speichern.

F-10: Das System MUSS es ERMÖGLICHEN, einen Lieferschein als PDF zu exportieren.

4.4 Rechnung (aus BA-12)

F-11: Das System MUSS es ERMÖGLICHEN, eine Rechnung für einen Kunden mit mindestens einer Position zu erstellen.

F-12: WENN eine Rechnung gespeichert wird, DANN MUSS das System eine fortlaufende, lückenlose Rechnungsnummer (Präfix R-) auf Basis der höchsten bisher vergebenen Nummer vergeben (GR-01).

F-13: Das System MUSS in jeder Rechnung die Pflichtangaben gemäß § 14 UStG führen: Rechnungsnummer, Rechnungsdatum, Leistungsdatum, Kundendaten, Positionen mit Einzel- und Gesamtbeträgen, Steuersatz und Steuerbetrag sowie Netto-, Steuer- und Bruttosumme.

F-14: WENN bei der Rechnungserstellung kein abweichendes Zahlungsziel angegeben ist, DANN MUSS das System ein Standard-Zahlungsziel von 14 Kalendertagen ab Rechnungsdatum setzen (GR-06).

F-15: Das System MUSS es ERMÖGLICHEN, eine Rechnung als PDF zu exportieren.

4.5 Geführte Rechnungserstellung (aus BA-13)

F-16: Das System MUSS es ERMÖGLICHEN, die Rechnungserstellung schrittweise durchzuführen: (1) Kunde auswählen, (2) mindestens eine Produktposition mit Menge erfassen, (3) Rechnungsdatum und Zahlungsziel bestätigen, (4) Zusammenfassung prüfen, (5) speichern.

F-17: WENN die Schritteingabe abgeschlossen ist, DANN MUSS das System vor dem Speichern eine Zusammenfassung mit Kunde, allen Positionen, Mengen, Netto-/Steuer-/Bruttosumme, Rechnungsdatum und Zahlungsziel anzeigen.

F-18: WENN ein Pflichtfeld fehlt (kein Kunde, keine Position, kein Rechnungsdatum), DANN MUSS das System das Speichern ablehnen und das fehlende Pflichtfeld benennen (Q-09).

4.6 Rechnung stornieren (aus BA-14)

F-19: Das System MUSS es ERMÖGLICHEN, eine gespeicherte Rechnung im Status OFFEN zu stornieren.

F-20: WENN eine Rechnung storniert wird, DANN MUSS das System ihren Status auf STORNIERT setzen, sie nicht mehr in der Liste offener Rechnungen führen und den Vorgang mit Datum protokollieren.

F-21: WENN eine Rechnung den Status STORNIERT hat, DANN MUSS das System jede weitere inhaltliche Änderung ablehnen.

Abgrenzung Stornierung vs. Stornorechnung: Die In-place-Stornierung (F-19/F-20) ist ausschließlich für Rechnungen im Status OFFEN zulässig. Eine bereits VERSENDETe Rechnung wird nicht in-place storniert, sondern gemäß F-24 über eine neue Storno-/Korrekturrechnung korrigiert.

4.7 Übergreifende Prozessregeln

F-22 (Dokumentenzyklus-Konsistenz, GR-05): WENN ein Beleg aus einem Vorgängerbeleg erzeugt wird, DANN MUSS das System Kunde, Positionen und Mengen übernehmen und eine eindeutige Rückreferenz auf den Vorgänger speichern.

F-23 (Steuer-/Summenberechnung, GR-03): WENN eine Position gespeichert wird, DANN MUSS das System Netto-, Steuer- und Bruttobetrag automatisch berechnen, wobei der zum Zeitpunkt der Belegerstellung gültige Steuersatz und Einzelpreis des Produkts als unveränderlicher Snapshot in der Position abgelegt werden.

F-24 (Unveränderlichkeit, GR-02 / Q-07): WENN ein Beleg den Status VERSENDET hat, DANN MUSS das System jede inhaltliche Änderung ablehnen; Korrekturen erfolgen ausschließlich über neue Belege (Storno-/Korrekturrechnung).

5. Nicht-funktionale Anforderungen

NF-PERF-01 (aus Q-03): Das System MUSS die Erstellung und den PDF-Export eines beliebigen Belegtyps INNERHALB VON 2 SEKUNDEN abschließen, bei Belegen mit bis zu 50 Positionen und einem Datenbestand gemäß Q-01 (bis 5.000 Kunden/Produkte).

NF-INT-01 (aus Q-07 / GR-02): Das System MUSS nach dem Status VERSENDET einer Rechnung jede inhaltliche Änderung ablehnen; zulässig bleiben ausschließlich Storno- bzw. Korrekturvorgänge über neue Belege.

NF-USE-01 (aus Q-05): Die geführte Erstellung einer vollständigen Rechnung an einen bestehenden Kunden MUSS von einer erstmaligen Anwender:in OHNE EXTERNE HILFE IN WENIGER ALS 10 MINUTEN im ersten Versuch abgeschlossen werden können (Nachweis durch Usability-Test mit mind. 5 Testpersonen).

NF-USE-02 (aus Q-09): Das System MUSS fehlende Pflichtangaben in den Belegformularen so markieren und benennen, dass mindestens 80 % der Testpersonen die fehlende Eingabe ohne externe Hilfe im ersten Korrekturversuch ergänzen können.

NF-SEC-01 (aus Q-06): Das System MUSS alle Beleg- und personenbezogenen Daten ausschließlich lokal im Dateisystem speichern, sodass keine Übertragung an externe Dienste erfolgt (Nachweis durch Netzwerk-Monitoring während eines repräsentativen Nutzungslaufs).

6. Daten und Schnittstellen

Dieses Kapitel ist direkter Input für den Modultestplan (eigenständiges Dokument Modultestplan.md). Datentypen werden bereits als Java-Typen angegeben.

6.1 Datenobjekte und Datentypen

Designgrundsätze:

  • Geldbeträge werden als java.math.BigDecimal mit Scale 2 und kaufmännischer Rundung (RoundingMode.HALF_UP) geführt — nicht als double (Gleitkomma-Rundungs­fehler wären für Beträge unzulässig).
  • Belegnummern werden als String geführt (festes Format mit Präfix und führenden Nullen, z. B. "R-2026-000124") — nicht als int.
  • Datumswerte werden als java.time.LocalDate geführt.
  • Mengen werden als int (Stückzahl) geführt.
  • Steuersätze werden als Faktor im Typ BigDecimal geführt (z. B. 0.19).

enum DokumentStatus

{ ENTWURF, OFFEN, VERSENDET, STORNIERT }

Bedeutung und Übergänge: ENTWURF = Beleg in Erstellung (Initialstatus); OFFEN = gespeichert und gültig; VERSENDET = an den Kunden übergeben (ab dann unveränderlich, F-24); STORNIERT = storniert. Zulässige Übergänge: ENTWURF → OFFEN (beim Speichern), OFFEN → VERSENDET (Markierung „versendet"), OFFEN → STORNIERT (Stornierung, F-19).

Klasse Dokumentposition

Attribut Java-Typ Beschreibung
produktReferenz String Produktnummer des referenzierten Produkts (Gruppe B)
bezeichnung String Snapshot der Produktbezeichnung zum Erstellzeitpunkt
menge int Stückzahl (> 0)
einzelpreisNetto BigDecimal Snapshot Netto-Einzelpreis (Scale 2)
steuersatz BigDecimal Snapshot Steuersatz, z. B. 0.19
positionssummeNetto BigDecimal einzelpreisNetto * menge (Scale 2)

Abstrakte Klasse Dokument

Attribut Java-Typ Beschreibung
belegnummer String eindeutig, vom System generiert
datum LocalDate Erstelldatum
kundenReferenz String Kundennummer (Gruppe C)
positionen List<Dokumentposition> mind. 1 Position
status DokumentStatus Lebenszyklus-Status
vorgaengerNr String (optional, null) Rückreferenz auf Vorgängerbeleg (GR-05)
summeNetto BigDecimal Summe aller Positionssummen (Scale 2)
summeSteuer BigDecimal Summe der Steuerbeträge (Scale 2)
summeBrutto BigDecimal summeNetto + summeSteuer (Scale 2)

Spezialisierungen (erben von Dokument)

Klasse Zusätzliche Attribute (Java-Typ)
Angebot gueltigBis: LocalDate
Auftragsbestaetigung — (nutzt vorgaengerNr → Angebot)
Lieferschein lieferdatum: LocalDate
Rechnung leistungsdatum: LocalDate, zahlungsziel: LocalDate, storniertAm: LocalDate (optional), storniertVon: String (optional)

6.2 Schnittstellen

Externe Schnittstellen:

ID Schnittstelle Zweck
IF-01 Lokales Dateisystem Persistenz der Belege, Ablage exportierter PDF-Dokumente
IF-02 Druckersystem (optional) Direkter Druck eines Belegs
IF-03 Standard-E-Mail-Client (optional) Versand eines Belegs als PDF-Anhang
IF-04 Datenexport (CSV) Export der Belegdaten als CSV in offenem Format (Q-08)

Anforderungen an die externen Schnittstellen

IF-01: Das System MUSS eine Schnittstelle zum lokalen Dateisystem bereitstellen, die es ERMÖGLICHT, Belege dauerhaft zu speichern und exportierte PDF-Dokumente abzulegen.

IF-02: Das System SOLLTE eine Schnittstelle zum Druckersystem bereitstellen, die es der Anwender:in ERMÖGLICHT, einen Beleg direkt zu drucken (optional).

IF-03: Das System SOLLTE eine Schnittstelle zum Standard-E-Mail-Client bereitstellen, die es der Anwender:in ERMÖGLICHT, einen Beleg als PDF-Anhang zu versenden (optional).

IF-04: Das System MUSS eine Export-Schnittstelle bereitstellen, die es der Anwender:in ERMÖGLICHT, die Belegdaten in einem offenen Format (CSV) in das lokale Dateisystem zu exportieren (Q-08).

Interne Schnittstellen: Die Schnittstellen werden hier fachlich beschrieben (Zweck, ausgetauschte Daten, Richtung); konkrete Methodensignaturen und Datentypen sind dem Komponentenentwurf bzw. dem Modultestplan (eigenständiges Dokument Modultestplan.md) vorbehalten.

Genutzte Schnittstellen (Komponente A ruft auf):

Schnittstelle Partner Richtung Fachlicher Zweck
Kundenzugriff (lesend) Gruppe C C → A Kunde per Kundennummer abrufen; Kundensuche (Name/Nr.)
Produktzugriff (lesend) Gruppe B B → A Produkt per Produktnummer abrufen; Produktsuche

Liefert die Stammdatenabfrage keinen Treffer, wird dies dem Aufrufer eindeutig signalisiert (kein Treffer).

Bereitgestellte Schnittstellen (Komponente A wird aufgerufen):

Schnittstelle Partner Richtung Fachlicher Zweck
Referenzprüfung Kunden Gruppe C A → C Anzahl der Belege, die einen Kunden referenzieren (Löschsperre GR-04 / C-F-10)
Referenzprüfung Produkte Gruppe B A → B Ob ein Produkt in Belegen referenziert ist (Löschsperre B-F-10)

Komponenteninterne Dienste (rein A-intern, fachlich beschrieben):

  • Belegnummernvergabe (GR-01): liefert je Belegtyp und Jahr die nächste fortlaufende, lückenlose Belegnummer im festen Format mit Präfix und führenden Nullen (z. B. R-2026-000124).
  • Belegpersistenz (IF-01): speichert Belege im lokalen Dateisystem, liefert einen Beleg zur Belegnummer und alle Belege; Belege werden nie gelöscht (GoBD).
  • PDF-Export (IF-01): exportiert einen Beleg als PDF in das lokale Dateisystem.
  • Ereignisbenachrichtigung (Observer, Paket gemeinsam): meldet Datenänderungen am Belegbestand an abonnierte Modulansichten (Gruppe D).

7. Systemarchitektur (logisch, grob)

Die Komponente folgt einer einfachen Schichtung: die GUI (Gruppe D) ruft den DokumentService (realisiert durch StandardDokumentService) auf, der die Fachlogik kapselt und die Dienste BelegnummernGenerator, KundenService, ProduktService und PdfExporter nutzt. Belege werden über ein DokumentRepository im lokalen Dateisystem persistiert (realisiert als JSON-Ablage). Nach jeder schreibenden Operation meldet der DokumentService die Datenänderung über einen EreignisBus (Observer-Muster, Paket gemeinsam; melde(DatenBereich.DOKUMENTE)); die Modulansichten der Gruppe D abonnieren diesen Bus und aktualisieren sich automatisch.

7.1 Klassendiagramm

Beschreibung zu Abbildung 1: Das Klassendiagramm zeigt die abstrakte Oberklasse Dokument mit den Spezialisierungen Angebot, Auftragsbestaetigung, Lieferschein und Rechnung (Vererbung). Ein Dokument besteht aus einer bis vielen Dokumentposition- Objekten (Komposition zwischen Dokument und Dokumentposition, Multiplizität 1..*). Jede Dokumentposition referenziert ein Produkt (Gruppe B), ein Dokument referenziert einen Kunde (Gruppe C) — jeweils über die Stammdatennummer (lose Kopplung). Der DokumentService orchestriert die Erstellung und nutzt den BelegnummernGenerator (Vergabe lückenloser Belegnummern), die Schnittstellen KundenService/ProduktService (Stammdaten), das DokumentRepository (Persistenz der Belege im lokalen Dateisystem), den PdfExporter (PDF-Export) sowie den EreignisBus (Benachrichtigung der Modulansichten nach Datenänderungen, Observer-Muster). Der Status eines Belegs wird über das Enum DokumentStatus abgebildet.

Abbildung 1: UML-Klassendiagramm Dokumentenzyklus (Gruppe A)

7.2 Sequenzdiagramm

Beschreibung zu Abbildung 2: Das Sequenzdiagramm stellt den Ablauf Rechnung erstellen dar. Die Anwender:in löst über die GUI (Gruppe D) erstelleRechnung(kundenNr, positionen, rechnungsdatum, zahlungsziel) am DokumentService aus (ist zahlungsziel = null, greift das Standard-Zahlungsziel). Dieser ermittelt über KundenService.findeKunde(...) und ProduktService.findeProdukt(...) die Stammdaten und legt sie als Snapshot je Position ab (Einzelpreis und Steuersatz, F-23), fordert vom BelegnummernGenerator mit naechsteNummer(RECHNUNG, jahr) eine lückenlose Rechnungsnummer an (GR-01), setzt das Standard-Zahlungsziel (+14 Tage, GR-06) und berechnet beim Setzen der Positionen die Netto-, Steuer- und Bruttosumme des Belegs (F-23). Anschließend persistiert er den Beleg über das DokumentRepository und meldet die Änderung über EreignisBus.melde(DOKUMENTE) an die abonnierten Modulansichten. Abschließend wird die gespeicherte Rechnung an die GUI zurückgegeben. Der PDF-Export ist ein separater Vorgang (im Diagramm unten dargestellt): über exportierePdf(...) lädt der DokumentService den Beleg erneut aus dem DokumentRepository und exportiert ihn mittels PdfExporter.exportiere(...) in das lokale Dateisystem (F-15, IF-01).

Abbildung 2: UML-Sequenzdiagramm „Rechnung erstellen" (Gruppe A)

8. Testbare Abnahmekriterien

AC-A-01 (zu F-01F-04, NF-PERF-01)Angebot erstellen und exportieren Vorbedingung: Ein Kunde und 5 Produkte sind erfasst. Aktion: Anwender:in erstellt ein Angebot mit 5 Positionen und exportiert es als PDF. Erwartet: Das Angebot ist mit Angebotsnummer (AN-…) und korrekten Summen gespeichert; der PDF-Export ist in ≤ 2 Sekunden abgeschlossen.

AC-A-02 (zu F-05F-07, F-22)Auftragsbestätigung aus Angebot Vorbedingung: Ein Angebot liegt vor. Aktion: Anwender:in erstellt eine Auftragsbestätigung mit Übernahme aller Positionen. Erwartet: Die AB ist mit eindeutiger Nummer (AB-…), übernommenen Positionen/Mengen und Rückreferenz auf das Angebot gespeichert und als PDF exportierbar.

AC-A-03 (zu F-08F-10, F-22)Lieferschein erstellen Vorbedingung: Eine Auftragsbestätigung liegt vor. Aktion: Anwender:in erstellt einen Lieferschein mit Lieferdatum. Erwartet: Der Lieferschein ist mit eindeutiger Nummer (LS-…), Lieferdatum und allen Positionsdaten gespeichert und als PDF exportierbar.

AC-A-04 (zu F-11F-15, F-23)Rechnung mit Pflichtangaben und Standard-Zahlungsziel Vorbedingung: Kunde und mind. eine Position liegen vor; letzte Rechnungsnummer = R-2026-000123. Aktion: Anwender:in erstellt eine Rechnung mit Rechnungsdatum 09.06.2026 ohne abweichendes Zahlungsziel. Erwartet: Die Rechnung trägt die Nummer R-2026-000124, ein Zahlungsziel 23.06.2026 (+14 Tage), alle Pflichtangaben gem. § 14 UStG sowie korrekte Netto-/Steuer-/Bruttosummen.

AC-A-05 (zu F-16F-18, NF-USE-01/02)Geführte Rechnungserstellung Vorbedingung: Mind. ein Kunde und ein Produkt vorhanden. Aktion: Anwender:in durchläuft die geführte Erstellung (Kunde → Position+Menge → Datum/ Zahlungsziel → Zusammenfassung → speichern). Erwartet: Vor dem Speichern erscheint eine Zusammenfassung mit Kunde, Position, Menge, Summen, Rechnungsdatum und Zahlungsziel; fehlt ein Pflichtfeld, wird das Speichern abgelehnt und das fehlende Feld benannt.

AC-A-06 (zu F-19F-21)Rechnung stornieren Vorbedingung: Eine Rechnung im Status OFFEN existiert. Aktion: Anwender:in storniert die Rechnung. Erwartet: Status wird STORNIERT, die Rechnung erscheint nicht mehr in der Liste offener Rechnungen, der Vorgang ist mit Datum protokolliert; weitere Änderungen werden abgelehnt.

AC-A-07 (zu F-23, F-24, NF-INT-01)Snapshot und Unveränderlichkeit Vorbedingung: Eine Rechnung mit einem Produkt ist erstellt; danach wird der Produktpreis geändert; eine zweite Rechnung im Status VERSENDET existiert. Aktion: Vergleich der ersten Rechnung mit dem geänderten Produktpreis; Änderungsversuch an der versendeten Rechnung. Erwartet: Die erste Rechnung behält den ursprünglichen Preis (Snapshot); der Änderungsversuch an der versendeten Rechnung wird abgelehnt.

9. Traceability LH ↔ PH

Jede für Gruppe A relevante Lastenheft-Anforderung ist mindestens einer Pflichtenheft-Anforderung zugeordnet.

LH-Anforderung Beschreibung (LH) PH-Anforderung(en)
BA-09 Angebot erstellen F-01, F-02, F-03, F-04
BA-10 Auftragsbestätigung erstellen F-05, F-06, F-07, F-22
BA-11 Lieferschein erstellen F-08, F-09, F-10, F-22
BA-12 Rechnung erstellen F-11, F-12, F-13, F-14, F-15
BA-13 Geführte Rechnungserstellung F-16, F-17, F-18
BA-14 Rechnung stornieren F-19, F-20, F-21
GR-01 Lückenlose Rechnungsnummern F-12 (Belegnummern-Regel)
GR-02 Unveränderlichkeit versendeter Dokumente F-24, F-21, NF-INT-01
GR-03 Steuerberechnung (Snapshot) F-23, F-03, F-13
GR-05 Dokumentenzyklus-Konsistenz F-22, F-06, F-09
GR-06 Standard-Zahlungsziel 14 Tage F-14
Q-01 Datenbestand-Referenzgröße (Lastannahme) NF-PERF-01 (Bedingung)
Q-03 Performance PDF-Erstellung ≤ 2 s NF-PERF-01
Q-05 Usability Ersterstellung Rechnung NF-USE-01
Q-06 Datensicherheit: 100 % lokale Datenhaltung NF-SEC-01, IF-01
Q-07 Unveränderlichkeit versendeter Rechnungen NF-INT-01, F-24
Q-08 Datenexport (offenes Format, CSV) IF-04
Q-09 Pflichtfeldhinweise ≥ 80 % NF-USE-02, F-18

Hinweis: GR-04 (Löschsperre für verknüpfte Kunden) liegt in der Verantwortung von Gruppe C; Komponente A nutzt Kundendaten nur lesend (IF/KundenService) und ist von dieser Regel betroffen, spezifiziert sie aber nicht.

Hinweis: Q-02 (Such-/Auflistungs-Performance) betrifft die Module Kunden-/Produktverwaltung (Gruppen C/B); Q-04 (Anwendungsstart) ist eine querschnittliche Start-/Integrationsanforderung. Beide werden von Komponente A nicht spezifiziert; der Gesamtnachweis erfolgt im team-weiten Anforderungsabgleich.

10. Anhänge

10.1 Abkürzungen

Abkürzung Bedeutung
F Funktionale Anforderung (Pflichtenheft)
NF Nicht-funktionale Anforderung (Pflichtenheft)
IF Schnittstelle (Interface)
AC Abnahmekriterium
BA Benutzeranforderung (Lastenheft)
GR Geschäftsregel (Lastenheft)
Q Qualitätsanforderung (Lastenheft)
SRS System Requirements Specification (Pflichtenheft)

10.2 Glossar

Es gilt das Glossar des Lastenhefts (§ 8.1) unverändert.

10.3 Referenzen

Siehe Kapitel 1.5.