Merge branch 'main' of https://gitty.informatik.hs-mannheim.de/3023626/SE1_Team_1
commit
50c6197fd6
|
|
@ -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)]
|
||||

|
||||
|
||||
**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)]
|
||||

|
||||
|
||||
**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.
|
|
@ -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)]
|
||||

|
||||
|
||||
**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)]
|
||||

|
||||
|
||||
**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 |
|
|
@ -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 |
|
|
@ -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
|
||||
Loading…
Reference in New Issue