Hans-Jürgen Steffens Systemanalyse SS 04 1
9. Vorlesung: Fortsetzung Klassendiagramm für Fallbeispiel
Entwicklung des Klassendiagramms aus Use Cases
• Fortsetzung der 8. Vorlesung
• Komplettierung des Klassendiagramms
• Bildung von Packages
Hans-Jürgen Steffens Systemanalyse SS 04 2
Use Case Dauer ermitteln
Operation „dauerErmitteln()“ bei Klasse Bestellung Wovon hängt die voraussichtliche Dauer ab?
• Zubereitungszeit der Speisen– Es wird von einem Durchschnittswert ausgegangen, so dass diese Zeiten
nicht gesondert hinterlegt werden müssen
• Wartezeit, bis Speisen zubereitet werden– Diese hängt von anderen Bestellungen ab
(Kapazität der Küche sei konstant)
• Verfügbarkeit der Fahrer– Hängt ebenfalls von den anderen Bestellungen und voraussichtlichen
Rückkunftzeit der entsprechenden Touren ab– Außerdem von der Zahl der anwesenden Fahrer (Es wird davon
ausgegangen, dass die Zahl pro Schicht konstant ist)
• Entfernung zur Lieferadresse– Adressen werden Entfernungsbereichen (z. B. 5 min., 10 min., ...) zugeordnet
• Zusammenfassung von Speisen zu Touren(der genaue Algorithmus wird hier nicht betrachtet)
Hans-Jürgen Steffens Systemanalyse SS 04 3
Erweiterungen Klassendiagramm
BezeichnungGrößenbezeichnungGrößenbezeichnungGroß
Kategorie
1
*
berechneSumme()auf nehmen()kundeZuordnen()speisenZuordnen()dauerErmitteln()auf tragf ürKüchedrucken()f ertigMelden()rechnungDrucken()tourAnlegen()bestehendeTourZuordnen()status()
Nr
DatumUhrzeitBemerkungUhrzeitFertigmeldung
Bestellung
* 1
erechneGesamtpreis()
anlegen()speiseZuordnen()positionAusdrucken()positionFürKücheAusdrucken()
NrMengeGröße
Bestellposition
1
1..*
1 *
auswählen()alternativ enVorschlagen()ausgegangenMelden()v erf ügbarMelden()
NrNameBeschreibungPreisPreisGroßMussGekochtWerdenAusgegangen
Speise
*
*
Alternativ e
auswählen()anlegen()ändern()adresseZuordnen()adresse()f ahrtdauer()
KundennrNameVorname
HausnrTelef onnr
Kunde
PLZOrtsname
Ort
adresseAuswählen()adresse()f ahrtdauer()
Straßenname
Straße
* 1
1
1..*
Fahrtdauer
Entfernungsbereich
*
1
inAuslief erungMelden()rückkunf tMelden()v oraussichtlicheRückkunf tberechnen()status()
UhrzeitAbf ahrtUhrzeitRückkunf t
Tour
11..*
Fahrer
1
*
JahrMonatTag
Schicht-Durchführung
BezeichnungUhrzeitBeginnUhrzeitEnde
Schicht
* 1*
*
Dienst
1
*
Hans-Jürgen Steffens Systemanalyse SS 04 4
Weitere Use Cases
UC Speise ausgegangen melden / Speise wieder verfügbar melden
• Entsprechende Operations der Klasse Speise UC Tour als in Auslieferung melden / Rückkunft melden
• Entsprechende Operations der Klasse Tour UC Über Bestellstatus informieren
• Operation status() der Klasse Bestellung. Ermittelt den Status aus UhrzeitFertigstellung und durch Aufruf der Operation status () der Klasse Tour, welche wiederum die Uhrzeiten auswertet.
UC Arbeitsbeginn / Arbeitsende erfassen
• Klasse Mitarbeiter als Generalisierung der Klasse Fahrer
• Für jede geleistete Schicht wird eine Arbeitszeitmeldung mit Beginn und Ende (Jeweils volles Datum und Uhrzeit) angelegt.
Hans-Jürgen Steffens Systemanalyse SS 04 5
Arbeitszeitmeldungen
FahrerVerkäufer
ArbeitsbeginnErfassen()ArbeitsendeErfassen()auswählen()
Mitarbeiter-NrNameVornameTelefonnrStraßeHausnrPLZOrt
MitarbeiterJahrBeginnMonatBeginnTagBeginnUhrzeitBeginnJahrEndeMonatEndeTagEndeUhrzeitEnde
Arbeitszeitmeldung
1
*
mitarbeiterZuordnen()
JahrMonatTag
Schicht-Durchführung
BezeichnungUhrzeitBeginnUhrzeitEnde
Schicht
* 1
*
*
Dienst
Hans-Jürgen Steffens Systemanalyse SS 04 6
Weitere Use Cases
UC Personaleinsatz planen
• Operation mitarbeiterZuordnen ( ) der Klasse Schicht-Durchführung
UC Speisekarte pflegen
• Nicht explizit modelliert (Nutzung der in der Analyse als gegeben vorausgesetzten „get“- und „set“-Operations zur Veränderung von Attributwerten bei der Klasse Speise und Kategorie).
Hans-Jürgen Steffens Systemanalyse SS 04 7
Use Case „Tageseinnahmen Fahrer abrechnen“
Operation „tageseinnahmenAbrechnen ( )“
• Diese sucht alle Touren des Fahrers heraus, die noch nicht abgerechnet sind und summiert deren Summen auf (Operation „berechne Summe“, die wiederum die entsprechende Operation bei Bestellung aufruft).
• Anschließend werden die Touren mittels des booleschen Attributs als „abgerechnet“ gekennzeichnet
berechneSumme()aufnehmen()kundeZuordnen()speisenZuordnen()dauerErmitteln()auftragfürKüchedrucken()fertigMelden()rechnungDrucken()tourAnlegen()bestehendeTourZuordnen()status()
NrDatumUhrzeitBemerkungUhrzeitFertigmeldung
Bestellung
inAuslieferungMelden()rückkunftMelden()voraussichtlicheRückkunftberechnen()status()berechneSumme()
UhrzeitAbfahrtUhrzeitRückkunftabgerechnet
Tour
1 1..*
tageseinnahmenAbrechnen()
Fahrer
1
*
Hans-Jürgen Steffens Systemanalyse SS 04 8
Use Case „Auswertungen erstellen“
Hier kommt es in der Analysephase weniger darauf an, entsprechende Operationen hinzuzufügen, sondern die gewünschten Arten von Auswertungen zu analysieren, ob sie mit Hilfe des Klassendiagramms realisierbar sind
Beispiele:
• Auswertung Umsatz pro Monat– Über Datum der Bestellung lassen sich die Bestellungen eines Monats
identifizieren und die Summen aufaddieren
• Auswertung Durchschnittliche Dauer von der Bestellung bis zur Auslieferung
– Uhrzeit der Zustellung wird nicht erfasst, da keine mobile Erfassung vorgesehen ist. Es lassen sich daher nur die Dauern zwischen Bestellung und Abfahrt oder zwischen Bestellung und Rückkunft der Fahrer auswerten (Mittelwert könnte als Annäherung an die gewünschte Größe gewertet werden)
• Auswertung Bestellungen pro Verkäufer– Erweiterung des Modells erforderlich: Assoziation zwischen Verkäufer und
Bestellung
Hans-Jürgen Steffens Systemanalyse SS 04 9
Zuordnung Verkäufer zu Bestellung
berechneSumme()aufnehmen()kundeZuordnen()speisenZuordnen()dauerErmitteln()auftragfürKüchedrucken()fertigMelden()rechnungDrucken()tourAnlegen()bestehendeTourZuordnen()status()
NrDatumUhrzeitBemerkungUhrzeitFertigmeldung
Bestellung
Verkäufer
0..1
* Untergrenze 0, da auch Internet-Bestellungen möglich sind
Hans-Jürgen Steffens Systemanalyse SS 04 10
UC, die über Internet abgewickelt werden
UC Bestellung über Internet aufgeben• Prinzipiell der gleiche Ablauf wie bei Bestellaufnahme durch
Verkäufer• Unterschiede liegen im Detail:
– Kunde darf seine Daten nicht über Auswahl aus Liste auswählen (er darf die anderen Kundendaten nicht sehen), sondern muss einige Mindestfelder (z. B. Name, Vorname, Telefonnr.) eingeben, bevor restliche Angaben angezeigt werden und ggf. korrigiert werden können.
– Bestellung kann einigen Beschränkungen (z. B. Höchstbestellwert) unterliegen
– Bestellung wird anschließend dem Verkäufer zur Freigabe weitergeleitet.
UC im Internet über Bestellstatus informieren• Eigene Class Operation definiert, die die Bestellung über
anonyme Eingabe der Bestellnummer auswählt, die Statusabfrage durchführt und die Antwort zurück liefert.
Hans-Jürgen Steffens Systemanalyse SS 04 11
Erweiterungen für Internet-UCs
berechneSumme()aufnehmen()
kundeZuordnen()speisenZuordnen()dauerErmitteln()auftragfürKüchedrucken()fertigMelden()rechnungDrucken()tourAnlegen()bestehendeTourZuordnen()status()überInternetAufgeben()internetBestellungGenehmigen()statusAbfrageInternet()
NrDatumUhrzeitBemerkung
UhrzeitFertigmeldung
Bestellung
* 1auswählen()anlegen()ändern()
adresseZuordnen()adresse()fahrtdauer()überInternetEingabeAuswählen()
KundennrNameVorname
HausnrTelefonnr
Kunde
Hans-Jürgen Steffens Systemanalyse SS 04 12
Use Case Bestellung stornieren / ändern
Problematik bei Stornierung / Änderung:
• Da die Aufträge sofort nach der Bestellung in die Küche gegeben werden, ist dem System nicht bekannt, ob diese bereits in Arbeit sind, oder noch problemlos umgeändert werden können.
Lösungsmöglichkeiten:
a) Der Verkäufer geht in die Küche und überprüft, ob Änderung noch problemlos möglich
b) Die Küche erhält ihre Aufträge nicht auf Papier, sondern ebenfalls elektronisch und bestätigt den Beginn der Bearbeitung. Vorher kann noch problemlos storniert werden.
c) Es wird prinzipiell so vor gegangen, dass Änderungen und Stornierungen bis zur Fertigmeldung möglich sind, danach nicht mehr.
Hans-Jürgen Steffens Systemanalyse SS 04 13
Use Case Bestellung stornieren / ändern
Beispielhaft wird die Stornierung einer Bestellung betrachtet:
• Operation „stornieren ( )“ der Klasse Bestellung:– Diese überprüft zunächst den Status (ob noch nicht fertig gemeldet)
– Es wird eine Storno-Meldung für die Küche ausgedruckt, damit diese ggf. die Zubereitung der Speisen stoppen kann.
– Die Tour, der die Bestellung zugeordnet ist, erhält eine Operation bestellungEntfernen( ), die an dieser Stelle aufgerufen wird.
– Die Bestellung wird gelöscht (und damit wg. der Komposition automatisch auch alle zugehörigen Bestellpositionen)
• Operation „bestellungEntfernen ( )“ der Klasse Tour:– Diese überprüft, ob noch weitere Bestellungen enthalten sind.
– Falls nicht, wird die Tour ebenfalls gelöscht.
Hans-Jürgen Steffens Systemanalyse SS 04 14
Erweiterungen für Stornierung
berechneSumme()aufnehmen()kundeZuordnen()speisenZuordnen()dauerErmitteln()auftragfürKüchedrucken()fertigMelden()rechnungDrucken()tourAnlegen()bestehendeTourZuordnen()status()überInternetAufgeben()internetBestellungGenehmigen()statusAbfrageInternet()stornieren()stornoMeldungDrucken()
NrDatumUhrzeitBemerkungUhrzeitFertigmeldung
Bestellung
inAuslieferungMelden()rückkunftMelden()voraussichtlicheRückkunftberechnen()status()berechneSumme()bestellungEntfernen()
UhrzeitAbfahrtUhrzeitRückkunftabgerechnet
Tour
1 1..*
Hans-Jürgen Steffens Systemanalyse SS 04 15
Weitere Fragestellungen
Aus Gründen des Modellumfangs hier nicht berücksichtigt:
• Änderungen (z. B. von Einzelpositionen)
• Korrektur von Fehlern / Problemen– Z. B. Kunde nimmt einen Teil der Lieferung nicht ab, weil er
telefonisch etwas anderes bestellt hat (und zahlt dann natürlich auch weniger)
– Lieferung konnte nicht zugestellt werden.
Hans-Jürgen Steffens Systemanalyse SS 04 16
Gesamt-Klassendiagramm Übersicht
Kategorie
1*
Bestellung
*1
Bestellposition
1
1..*1*
Speise
*
*
Alternative
Kunde
Ort
Straße
*
1
1 1..*
Entfernungsbereich
*1
Tour
1 1..*
Fahrer
1*
Verkäufer
Mitarbeiter
Arbeitszeitmeldung
1
*
Schicht-Durchführung
Schicht
*
1
*
*
Dienst
1
*
0..1*
BezeichnungGrößenbezeichnungGrößenbezeichnungGroß
Kategorie
1
*
berechneSumme()aufnehmen()kundeZuordnen()speisenZuordnen()dauerErmitteln()auftragfürKüchedrucken()fertigMelden()rechnungDrucken()tourAnlegen()bestehendeTourZuordnen()status()überInternetAufgeben()internetBestellungGenehmigen()statusAbfrageInternet()stornieren()stornoMeldungDrucken()
NrDatumUhrzeitBemerkungUhrzeitFertigmeldung
Bestellung
* 1
erechneGesamtpreis()anlegen()speiseZuordnen()positionAusdrucken()positionFürKücheAusdrucken()
NrMengeGröße
Bestellposition
1 1..*
1*
auswählen()alternativenVorschlagen()ausgegangenMelden()verfügbarMelden()
NrNameBeschreibungPreisPreisGroßMussGekochtWerdenAusgegangen
Speise
*
*
Alternative
auswählen()anlegen()ändern()adresseZuordnen()adresse()fahrtdauer()überInternetEingabeAuswählen()
KundennrNameVornameHausnrTelefonnr
Kunde
PLZOrtsname
Ort
adresseAuswählen()adresse()fahrtdauer()
Straßenname
Straße
*1
1
1..*
Fahrtdauer
Entfernungsbereich
* 1
inAuslieferungMelden()rückkunftMelden()voraussichtlicheRückkunftberechnen()status()berechneSumme()bestellungEntfernen()
UhrzeitAbfahrtUhrzeitRückkunftabgerechnet
Tour
1 1..*
tageseinnahmenAbrechnen()
Fahrer
1
*
Verkäufer
ArbeitsbeginnErfassen()ArbeitsendeErfassen()auswählen()
Mitarbeiter-NrNameVornameTelefonnrStraßeHausnrPLZOrt
Mitarbeiter
JahrBeginnMonatBeginnTagBeginnUhrzeitBeginnJahrEndeMonatEndeTagEndeUhrzeitEnde
Arbeitszeitmeldung
1*
mitarbeiterZuordnen()
JahrMonatTag
Schicht-Durchführung
BezeichnungUhrzeitBeginnUhrzeitEnde
Schicht*1
*
*
Dienst
1
*
0..1
*
UML-Class Diagram für das Informationssystem Pizza-Service Fachhochschule KaiserslauternStandort Zweibrücken
Vorlesung SystemanalyseAI2, Sommersemester 2002
Prof. Dr. Thomas Allweyer
Bestellung und Lieferung
Zeitplanungund-erfassung
Mitar-beiter
Kunden
Speisekarte
Hans-Jürgen Steffens Systemanalyse SS 04 18
Bildung von Packages
Zeitplanungund
-erfassungMitarbeiter
Kunden
Bestellungund
Lieferung
SpeisekarteIst abhängig von
Hans-Jürgen Steffens Systemanalyse SS 04 19
Detaildiagramm für Package Kunden
auswählen()anlegen()ändern()adresseZuordnen()adresse()fahrtdauer()überInternetEingabeAuswählen()
KundennrNameVornameHausnrTelefonnr
Kunde
PLZOrtsname
Ort
adresseAuswählen()adresse()fahrtdauer()
Straßenname
Straße
*1
1
1..*
Fahrtdauer
Entfernungsbereich
* 1berechneSumme()aufnehmen()kundeZuordnen()speisenZuordnen()dauerErmitteln()auftragfürKüchedrucken()fertigMelden()rechnungDrucken()tourAnlegen()bestehendeTourZuordnen()status()überInternetAufgeben()internetBestellungGenehmigen()statusAbfrageInternet()stornieren()stornoMeldungDrucken()
NrDatumUhrzeitBemerkungUhrzeitFertigmeldung
Bestellung und Lieferung::Bestellung
* 1
Klasse aus anderem Package
Hans-Jürgen Steffens Systemanalyse SS 04 20
Zusammenfassung
Das Klassendiagramm aus der vorangehenden Vorlesung wurde mit Hilfe der weiteren Use Case-Beschreibungen vervollständigt
Für die Erstellung von Auswertungen ist zu untersuchen, ob die gewünschten Auswertungen mit Hilfe der modellierten Lösung möglich sind, bzw. ob sie ergänzt werden muss
Bestellungen über das Internet laufen fachlich genauso wie die direkt am System, gewisse Funktionalitäten, z. B. Auswahl der Kundendaten müssen im Detail geändert werden
Für Stornierungen und Änderungen von Aufträgen ist deren Bearbeitungsstatus von Bedeutung, der allerdings erst einmal erfasst sein muss
Es wurde gezeigt, wie sich ein umfangreiches Modell mit Hilfe von Packages übersichtlicher strukturieren lässt
Hans-Jürgen Steffens Systemanalyse SS 04 21
Übungsfragen
Versuchen Sie, die gezeigten Erweiterungen des Klassendiagramms selbst nachzuvollziehen
Erläutern Sie mit Hilfe des Klassendiagramms, wie eine Bestellung abläuft
• Welche Operations sind beteiligt, was tun diese jeweils, welche Attributwerte werden genutzt / verändert?
Überlegen Sie sich für die zur Änderungs-/Stornierungsthematik vorgeschlagene Lösung b (Küche erhält Aufträge elektronisch) die notwendige Erweiterung für das Klassendiagramm
Welche neue nichtfunktionale Anforderung an das System resultiert aus diesem Lösungsvorschlag?