Objektorientierte Analyse
37) Analysebeispiel EU-Rent
Prof. Dr. rer. nat. habil. Uwe Aßmann Institut für Software- und
Multimediatechnik
Lehrstuhl Softwaretechnologie Fakultät für Informatik
TU Dresden
Version 11-0.1, 25.06.11
1) Beispiel EU-Rent
Überblick Teil III:
Objektorientierte Analyse (OOA)
1. Überblick Objektorientierte Analyse
1. (schon gehabt:) Strukturelle Modellierung mit CRC-Karten
2. Strukturelle metamodellgetriebene Modellierung mit UML für das Domänenmodell
1. Strukturelle metamodellgetriebene Modellierung 2. Modellierung von komplexen Objekten
1. Modellierung von Hierarchien
2. (Modellierung von komplexen Objekten und ihren Unterobjekten) 3. Modellierung von Komponenten (Groß-Objekte)
3. Strukturelle Modellierung für Kontextmodell und Top-Level-Architektur
3. Analyse von funktionalen Anforderungen
1. Funktionale Verfeinerung: Dynamische Modellierung und Szenarienanalyse mit Aktionsdiagrammen
2. Funktionale querschneidende Verfeinerung: Szenarienanalyse mit Anwendungsfällen, Kollaborationen und Interaktionsdiagrammen
3. (Funktionale querschneidende Verfeinerung für komplexe Objekte)
4. Beispiel Fallstudie EU-Rent (37)
Die Autoverleihfirma “EU-Rent”
►
EU-Rent ist eine Fallstudie, die von der internationalen
Forschungsgemeinschaften zur Demonstration von Analyse eingesetzt wird
■
Formulierung von Geschäftsregeln (business rules in business model, ST- II)
■
Domänenmodell
■
Anwendungsfalldiagramme
■
Aktivitätsdiagramme und Statecharts für Arbeitsabläufe, auch zur Szenarioanalyse von Anwendungsfalldiagrammen
■
Kontextmodelle
►
http://www.eurobizrules.org/ebrc2005/eurentcs/eurent.htm
Aktivitäten von EU-Rent
►
I.a. geht man von textuellen “user stories” aus (z.B. Interviews, Tonbandmitschnitte, Protokolle, ...)
►
Diese gilt es nun, zu analysieren
■
Wir betrachten 3 Gruppen von Aktivitäten. Ein einzelnes
Anwendungsfalldiagramm reicht nicht aus, das ganze Informationssystem zu modellerien
Reservierung
von Autos Ausleihe und Rückgabe
von Autos
Kundenclub-Programm vorbestellt
ad-hoc abgeholt Abholung, Rückgabe, auch
an anderer Zweigstelle
Rabatte und Sonderangebote
Rabattpunkte-Programm
Stakeholder (hier: Akteure)
►
Akteure stehen mit dem System in Beziehung. Noch keine Festlegung von Systemfunktionen
EU-Rent Mitarbeiter
Kundenbetreuer Zweigstelle
Kunde
Kundenbetreuer Kundenklub
EU-Rent System
Domänenmodell, 1. Streich
►
Domänenmodelle müssen die Organisation, Dinge,
Geschäftsvorgänge, -objekte modellieren. Die involvierten Personen werden mitmodelliert
►
Noch ohne Kardinalitäten und Attribute
Kunde
Person
Angestellter EU-Rent
Zweigstelle AutoKlasse
Auto
Klubmitglied Kundenbetreuer
Zweigstelle Kundenbetreuer
Kundenklub
A) Reservierungssystem von EU-Rent
►
Beim Ausfüllen (Elaboration) kommen neue Elemente hinzu
Auto vorbestellen
Auto umbestellen
Auto ad-hoc mieten Reservierungssystem
Auto abbestellen
CallCenter- Mitarbeiter
Kundenbetreuer Zweigstelle
Kunde
Neu!
Erste Szenarienanalyse mit Sequenzdiagramm
”Auto vorbestellen”
►
hier nur die
positiven Fälle Auto vorbestellen
CallCenter- Mitarbeiter Kunde
:Kunde :CallCenter
Mitarbeiter
:Reservierung
:Reservierungs- system
frageAutoAnTermin
OK bestelle
PrüfeTerminFrei
OK
OK Neu!
Neu!
erfasse Kundendaten
OK setze Kunden-
daten erfasse Autodaten
OK setze Auto-
daten
BCD-Einteilung
für Erste Szenarienanalyse ”Auto vorbestellen”
►
Einziehen einer Boundary-Klasse, Vergabe von BCD-Stereotypen
►
Umschichten der Kommunikation der Daten-Klasse
:Kunde :Reservierungs-
Dialog
:Reservierung :Reservierungs-
system frageAutoAnTermin
OK bestelle
prüfeTerminFrei (Termin)
OK
OK
erfasse Kundendaten
OK setze Kunden-
daten(K-Daten) erfasse Autodaten
OK setze Auto-
daten(A-Daten) autoReservieren
(Termin)
setze Kunden-
daten(K-Daten)
setze Auto-
daten(A-Daten)
Data layer
2. Runde Domänenmodell
►
Mehr Attribute, mehr Klassen. Ergibt erste Teile des Kontextmodells, der Top-Level-Architektur. des Datenmodells
►
Personen liegen nur teilweise im Datenmodell, da auch aktiv
konto
Person
Angestellter
<<data>>
EU-Rent
<<data>>
Zweigstelle
<<data>>
AutoKlasse
<<data>>
Auto
<<data>>
Klubmitglied
Kundenbetreuer Zweigstelle
Kundenbetreuer Kundenklub name
wohnort Person
<<data>>
Kunde
<<data>>
Reservierung start
<<control>>
Reservierungssystem autoReservieren(termin) setzeKundenDaten(kDaten) setzeAutoDaten(aDaten)
Top-Level-Architektur Kontextmodell
<<boundary>>
Reservierungs- Dialog
autoAnfragen(termin)
B) Ausleihesystem von EU-Rent
Auto rückgeben
Auto abholen
Autostörung melden
Ausleihesystem
Autoleihe bezahlen
Kundenbetreuer Zweigstelle
Kunde
Neu!
<<includes>>
Rabatt ausrechnen
<<includes>>
2. Szenarienanalyse mit Aktivitätendiagramm:
Auto ausleihen
►
Rabatte werden vom Mitarbeiter persönlich bestimmt
Auto abholen
Kundenbetreuer Zweigstelle
Kunde
Kunde Kundenbetreuer
Zweigstelle
Frage nach Auto aus Reservierung
Ausleih- system
Setze Reservierungs- status auf
„ausgeliehen“
Mechaniker
Fahre Auto vor Unterzeichne
Vertrag
Drucke Vertrag Modifiziere
Vertrag
Berechne Rabatt
Setze Reservierungs- status auf
„ausgeliehen“
Vergebe grösseres Auto [ok]
[not ok]
Reservierungs-
system
BCD für 2. Szenarienanalyse: Auto ausleihen
<<actor>>
Kunde <<boundary>>
Ausleihdialog
Frage nach Auto aus Reservierung
<<control>>
Ausleih- system
rentCar(reservation)
<<control>>
Mechaniker
moveCar(
position) Unterzeichne
Vertrag
Contract.
compute()
Contract.
adjust() Rabatt.
compute() CarClass.
adjust() [ok]
[not ok]
<<control>>
Reservierungs- system
Reservierungssystem.
setStatus(
„ausgeliehen“)
3. Runde Domänenmodell, Kontextmodell, Toplevel-Architektur
►
Mehr Details
Data layer
konto
Person
Angestellter
<<data>>
EU-Rent
<<data>>
Zweigstelle adjust()
<<data>>
Auto
<<data>>
Kundenbetreuer Zweigstelle
Kundenbetreuer name
wohnort Person
<<data>>
Kunde
start autoReservieren(termin)
setzeKundenDaten(kDaten) setzeAutoDaten(aDaten) Top-Level-Architektur
Kontextmodell
<<boundary>>
Reservierungs- Dialog
autoAnfragen(termin)
<<control>>
Ausleihsystem autoReservieren(termin) setzeKundenDaten(kDaten) setzeAutoDaten(aDaten)
<<data>>
AutoKlasse
Mechaniker moveCar(
position)
<<data>>
Rabatt compute()
<<boundary>>
Ausleihdialog rentCar(reservation)
<<data>>
Contract compute() adjust()
<<controll>>
Reservierungssystem
<<data>>
Reservierung
C) Kundenclubprogramm von EU-Rent
Melde Mitglied ab
Registriere Mitglied Kundenklubsystem
Verändere Datensatz
Kundenbetreuer
Kunde
Call Center
Betreuer Kundenbetreuer
Zweigstelle
3. Szenarienanalyse mit Statecharts: Kunde als Klubmitglied verwalten
Kunde nicht registriert
Kunde registriert
Kunde abgemeldet
Gespräch/registrieren()
Anruf, Formular, Gespräch, email/
registrieren()
email/Daten ändern()
email/einstellen()
3. Szenarienanalyse: Statecharts
►
Verfeinerung mit Methoden einer Verhaltensmaschine für das Kundenklubprogramm
Kunde nicht registriert
Kunde registriert
Kunde
KundenKlubDialog.register() [authorization==OK]/
Kundenklubprogramm.registrieren(k-Daten)
KundenKlubDialog.register()/
Kundenklubprogramm.registrieren(k-Daten)
KundenKlubDialog.change(k-Daten)/
datenAendern(k-Daten) KundenKlubDialog.stop(k-Daten)/
Kundenklubprogramm.einstellen(k-Daten)
4. Versuch Domänenmodell, Kontextmodell, Top-Level-Architektur
►
Mehr Details
Data layer
konto
Person
Angestellter
<<data>>
EU-Rent
<<data>>
Zweigstelle adjust()
<<data>>
Auto
<<data>>
Kundenbetreuer Zweigstelle
Kundenbetreuer name
wohnort Person
<<data>>
Kunde
<<data>>
Reservierung start
<<control>>Reservierungssystem autoReservieren(termin)
setzeKundenDaten(kDaten) setzeAutoDaten(aDaten) Top-Level-Architektur
Kontextmodell
<<boundary>>
Reservierungs- Dialog
autoAnfragen(termin)
<<control>> Ausleihsystem autoReservieren(termin) setzeKundenDaten(kDaten) setzeAutoDaten(aDaten)
<<data>>
AutoKlasse
Mechaniker moveCar(
position)
<<data>>
Rabatt compute()
<<boundary>>
Ausleihdialog rentCar(reservation)
<<data>>
Contract compute() adjust()
<<boundary>>
Kundenklubdialog register(k-Daten) change(k-Daten) stop(k-Daten)
<<control>>Kundenklubprogramm registriere(k-Daten)
datenAendern(k-Daten) einstellen(k-Daten)
Was haben wir gelernt?
►
Szenarienanalyse hilft uns, aus Anforderungsfalldiagrammen
■
Domänenmodelle zu finden
■
Die Klassen des Domänenmodells nach BCD einzuteilen (hauptsächlich:
boundary, control, data)
■
Weitere Modelle abzuleiten
♦ Kontextmodell
♦ Top-Level-Architektur (als Teil der Kontrollschicht)
♦ Datenschicht
►
Je nach Situation verwendet man Sequenzdiagramme, Aktivitätsdiagramme, Kommunikationsdiagramme, oder Zustandsdiagramme
►