Lucas Strubel 2026-06-15 15:28:21 +02:00
commit 50c6197fd6
10 changed files with 174 additions and 14 deletions

View File

@ -51,6 +51,7 @@ und den Modultest der Komponente *Verwaltung von Produkten*.
| Version | Datum | Autor | Grund der Änderung |
|---------|------------|----------------------------------------------------|---------------------|
| 1.0 | 10.06.2026 | Meron Berhane, Jan-Micah SchulzeAmeling, Jessica Volz | Initiale Erstellung |
| 1.1 | 10.06.2026 | Meron Berhane |UML-Klassen- und Sequenzdiagramm Gruppe B ergänzt|
\newpage
@ -357,7 +358,7 @@ daraufhin automatisch aktualisiert.
<!-- TODO: UML-Klassendiagramm hier einfügen (Abbildung 1) -->
![Abbildung 1: UML-Klassendiagramm Produktverwaltung (Gruppe B)]
![Abbildung 1: UML-Klassendiagramm Produktverwaltung (Gruppe B)](diagramme/klassendiagramm_produktverwaltung_gruppeB)
**Beschreibung zu Abbildung 1:** Das Klassendiagramm zeigt die Entitätsklasse `Produkt`
mit ihren Attributen (Kapitel 6.1). Der `ProduktVerwaltungsService` orchestriert Anlegen,
@ -374,7 +375,7 @@ Kopplung).
<!-- TODO: UML-Sequenzdiagramm hier einfügen (Abbildung 2) -->
![Abbildung 2: UML-Sequenzdiagramm „Produkt löschen mit Löschsperre" (Gruppe B)]
![Abbildung 2: UML-Sequenzdiagramm „Produkt löschen mit Löschsperre“ (Gruppe B)](diagramme/sequenz_produkt_loeschen_gruppeB.png)
**Beschreibung zu Abbildung 2:** Das Sequenzdiagramm stellt den Ablauf *Produkt löschen*
dar. Die Anwender:in löst über die GUI (Gruppe D) `loescheProdukt(produktnummer)` am

Binary file not shown.

View File

@ -3,7 +3,7 @@ title: "Pflichtenheft"
subtitle: "Desktop-Fakturierungsanwendung — Gruppe D: Programmoberfläche"
author:
- Team 1 Gruppe D
version: "1.0"
version: "1.1"
lang: de-DE
toc: true
toc-depth: 3
@ -14,7 +14,7 @@ fontsize: 12pt
linestretch: 1.5
mainfont: "Times New Roman"
sansfont: "Arial"
monofont: "DejaVu Sans Mono"
monofont: "Menlo"
header-includes: |
\usepackage{fancyhdr}
\usepackage{lastpage}
@ -22,7 +22,7 @@ header-includes: |
\fancyhf{}
\fancyhead[L]{Team 1 Gruppe D}
\fancyhead[C]{Pflichtenheft}
\fancyhead[R]{Version 1.0}
\fancyhead[R]{Version 1.1}
\fancyfoot[C]{\thepage\ /\ \pageref{LastPage}}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0pt}
@ -39,7 +39,7 @@ header-includes: |
+-----------------------------+-------------------------+-------------------------+
| Gruppe D (Oberfläche) | Modulverantwortlicher | Modulverantwortlicher |
+-----------------------------+-------------------------+-------------------------+
| 10.06.2026 | 10.06.2026 | 10.06.2026 |
| 13.06.2026 | 13.06.2026 | 13.06.2026 |
+-----------------------------+-------------------------+-------------------------+
**Freigabevermerk:** Dieses Dokument ist nach Prüfung und Freigabe durch den
@ -51,6 +51,7 @@ und den Modultest der Komponente *Programmoberfläche*.
| Version | Datum | Autor | Grund der Änderung |
|---------|------------|----------------------------------------------|---------------------|
| 1.0 | 10.06.2026 | Mirkan Güngör, Moritz König, Mohammed Bouhki | Initiale Erstellung |
| 1.1 | 13.06.2026 | Mirkan Güngör, Moritz König, Mohammed Bouhki | Einfügen der UML-Diagramme und Aktualisierung der Referenzen |
\newpage
@ -100,7 +101,7 @@ 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
- Pflichtenheft Gruppe A „Prozess / Dokumentenzyklus", Version 1.0, 09.06.2026
- Pflichtenheft Gruppe A „Prozess / Dokumentenzyklus", Version 1.1, 13.06.2026
- Pflichtenheft Gruppe B „Verwaltung von Produkten", Version 1.0, 10.06.2026
- Pflichtenheft Gruppe C „Verwaltung von Kunden", Version 1.0, 10.06.2026
- Vorlesungsunterlagen Software Engineering 1 (SoSe 2026), Foliensatz „Lasten- und Pflichtenheft"
@ -333,10 +334,13 @@ auslösenden Aktionen an (F-07).
**Interne Schnittstellen (genutzte Dienste der anderen Komponenten), als Java-Interfaces
skizziert:**
Hinweis: `PositionsEingabe` ist das UI-interne Modell der Gruppe D und wird im
Controller vor dem Aufruf der Gruppe-A-Schnittstelle in `Positionsangabe` umgewandelt.
```java
// Gruppe A — Dokumentenzyklus (genutzt von F-06 bis F-15)
public interface DokumentService {
Rechnung erstelleRechnung(String kundenNr, List<PositionsEingabe> positionen,
Rechnung erstelleRechnung(String kundenNr, List<Positionsangabe> positionen,
LocalDate rechnungsdatum, LocalDate zahlungsziel);
void storniere(String rechnungsnummer);
List<Dokument> alleDokumente();
@ -379,9 +383,7 @@ von GUI-Framework-Klassen und damit im Modultest ohne Oberfläche prüfbar.
### 7.1 Klassendiagramm
<!-- TODO: UML-Klassendiagramm hier einfügen (Abbildung 1) -->
![Abbildung 1: UML-Klassendiagramm Programmoberfläche (Gruppe D)]
![UML-Klassendiagramm Programmoberfläche (Gruppe D)](diagramme/klassendiagramm_programmoberflaeche.png)
**Beschreibung zu Abbildung 1:** Das Klassendiagramm zeigt die View- und Controller-Schicht
der Oberfläche. Das `HauptFenster` (ein `JFrame`) verwaltet die Navigation (F-01, F-02): es
@ -398,9 +400,7 @@ einheitlich über die Klasse `Meldung` dargestellt (F-16, F-17).
### 7.2 Sequenzdiagramm
<!-- TODO: UML-Sequenzdiagramm hier einfügen (Abbildung 2) -->
![Abbildung 2: UML-Sequenzdiagramm „Geführte Rechnungserstellung (Wizard)" (Gruppe D)]
![UML-Sequenzdiagramm Rechnungserstellung (Gruppe D)](diagramme/sequenz_rechnungserstellung_wizard_gruppeD.png)
**Beschreibung zu Abbildung 2:** Das Sequenzdiagramm stellt die Dialogfolge *geführte
Rechnungserstellung* dar. Die Anwender:in startet den Wizard; der

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

View File

@ -0,0 +1,106 @@
@startuml
!pragma layout smetana
title UML-Klassendiagramm Programmoberflaeche (Gruppe D)
skinparam classAttributeIconSize 0
skinparam linetype ortho
package "gui" {
class HauptFenster {
- aktuellesModul : String
- wechsleZu(String)
}
interface ModulPanel {
+ aktualisiere()
+ hatUngespeicherteAenderungen() : boolean
}
class KundenPanel
class ProduktPanel
class DokumentListenPanel
class RechnungsWizardDialog
class StammdatenController {
+ kundenListe(String) : List<Kunde>
+ produkteListe(String) : List<Produkt>
}
class DokumentListenController {
+ gefiltert(DokumentStatus) : List<Dokument>
+ aktionenFuer(Dokument) : BelegAktionen
+ storniere(String, boolean) : Meldung
}
class RechnungsWizardController {
+ weiter() : boolean
+ zurueck()
+ erzeugeZusammenfassung() : String
+ speichern() : Meldung
}
class RechnungsWizardModel {
- aktuellerSchritt : WizardSchritt
- kundenNr : String
- positionen : List<PositionsEingabe>
- rechnungsdatum : LocalDate
- zahlungsziel : LocalDate
}
enum WizardSchritt {
KUNDE_WAEHLEN
POSITIONEN_ERFASSEN
DATEN_BESTAETIGEN
ZUSAMMENFASSUNG
SPEICHERN
}
class Meldung {
- typ : MeldungsTyp
- feldname : String
- text : String
}
class BelegAktionen
class PositionsEingabe
}
package "Schnittstellen Gruppen A-C" {
interface DokumentService
interface KundenService
interface ProduktService
}
package "gemeinsam" {
class EreignisBus
}
ModulPanel <|.. KundenPanel
ModulPanel <|.. ProduktPanel
ModulPanel <|.. DokumentListenPanel
HauptFenster *-- KundenPanel
HauptFenster *-- ProduktPanel
HauptFenster *-- DokumentListenPanel
KundenPanel --> StammdatenController
ProduktPanel --> StammdatenController
DokumentListenPanel --> DokumentListenController
RechnungsWizardDialog --> RechnungsWizardController
StammdatenController --> KundenService
StammdatenController --> ProduktService
DokumentListenController --> DokumentService
RechnungsWizardController --> DokumentService
RechnungsWizardController --> KundenService
RechnungsWizardController --> ProduktService
RechnungsWizardController *-- RechnungsWizardModel
RechnungsWizardModel --> WizardSchritt
RechnungsWizardModel *-- PositionsEingabe
RechnungsWizardController --> Meldung
DokumentListenController --> BelegAktionen
KundenPanel ..> EreignisBus : aktualisiert
ProduktPanel ..> EreignisBus : aktualisiert
DokumentListenPanel ..> EreignisBus : aktualisiert
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -0,0 +1,53 @@
@startuml
title UML-Sequenzdiagramm Gefuehrte Rechnungserstellung (Gruppe D)
autonumber
actor "Anwender:in" as Anw
boundary "RechnungsWizardDialog" as Dialog
control "RechnungsWizardController" as Controller
participant "KundenService\n(Gruppe C)" as Kunden
participant "ProduktService\n(Gruppe B)" as Produkte
participant "DokumentService\n(Gruppe A)" as Dokumente
Anw -> Dialog : Wizard starten
Dialog -> Controller : getModel()
Controller --> Dialog : aktuellerSchritt = KUNDE_WAEHLEN
Dialog --> Anw : Schritt 1: Kunde waehlen
Anw -> Dialog : Kunde suchen und auswaehlen
Dialog -> Kunden : suche(suchbegriff)
Kunden --> Dialog : List<Kunde>
Dialog -> Controller : weiter()
Controller --> Dialog : Schritt 2 anzeigen
Anw -> Dialog : Produktposition und Menge erfassen
Dialog -> Produkte : suche(suchbegriff)
Produkte --> Dialog : List<Produkt>
Dialog -> Controller : weiter()
alt Position fehlt oder Menge <= 0
Controller --> Dialog : Meldung mit Feldname
Dialog --> Anw : Feld markieren und Meldung anzeigen
else Eingabe vollstaendig
Controller --> Dialog : Schritt 3 anzeigen
end
Anw -> Dialog : Rechnungsdatum und Zahlungsziel bestaetigen
Dialog -> Controller : weiter()
Controller --> Dialog : Schritt 4 anzeigen
Dialog -> Controller : erzeugeZusammenfassung()
Controller -> Kunden : findeKunde(kundennummer)
Controller -> Produkte : findeProdukt(produktnummer)
Controller -> Dokumente : berechneSummen(positionen)
Dokumente --> Controller : Summen
Controller --> Dialog : Zusammenfassung
Dialog --> Anw : Zusammenfassung anzeigen
Anw -> Dialog : Speichern bestaetigen
Dialog -> Controller : speichern()
Controller -> Dokumente : erstelleRechnung(kundenNr, positionen,\nrechnungsdatum, zahlungsziel)
Dokumente --> Controller : Rechnung mit Rechnungsnummer
Controller --> Dialog : Erfolgsmeldung
Dialog --> Anw : Rechnungsnummer anzeigen
@enduml