Fallbeispiel

Werbung
Teil II: OOP und JAVA
(Vorlesung 10)
Modul: Programmierung B-PRG
Grundlagen der Programmierung II
Prof. Dot.-Ing. Roberto Zicari
Professur für Datenbanken und Informationssysteme (FB 12)
21.06.06
1
Teil 6
Fallbeispiel „Videothek“
- von der Idee zum Produkt UML nach JAVA
2
Diagramme in UML 2
3
DBIS - SS2006
Tools für Diagramme in UML 2
Übersicht 100 UML Tools:
• www.jeckle.de/umltools.htm
Generierung von Code aus UML:
• z.B. Eclipse Omondo
www.omondo.de
4
DBIS - SS2006
GUIDELINE
Wie kommt man von UML zu Java?
5
DBIS - SS2006
Guideline:
Wie kommt man von UML zu Java?
Analyse: Mit dem Kunden eine
Anforderungsanalyse machen.
Analyse: Aus der Anforderungsanalyse ein Use Case - Diagramm
erstellen.
Analyse: Verifikation der Use Cases
durch Benutzer.
6
DBIS - SS2006
Guideline:
Wie kommt man von UML zu Java?
Analyse: Ausfüllen der Use CaseSchablone für die Use Cases und
Erstellen von Aktivitätsdiagrammen.
Analyse: Wiederholte Verifikation
durch den Benutzer.
Analyse: Erstellen von
Klassendiagrammen für
Domain Objects.
7
DBIS - SS2006
Guideline:
Wie kommt man von UML zu Java?
Analyse: Darstellung von Szenarios
in Sequenzdiagrammen.
Analyse (optional): Erstellung von
Zustandsdiagrammen oder anderen
Diagrammtypen.
Entwurf: Entscheidung für eine
Architektur in Abhängigkeit von den
Vorgaben.
8
DBIS - SS2006
Guideline:
Wie kommt man von UML zu Java?
Entwurf: Entwurf eines Prototyps und
“Proof of Concept“.
Entwurf: Verifikation des Prototyps durch
Benutzer.
Entwurf: Erweiterung des
Klassendiagramms um
implementierungsspezifische Parameter.
(Klassendiagramm wird an
Programmiersprache angepasst.)
9
DBIS - SS2006
Guideline:
Wie kommt man von UML zu Java?
Entwurf: Paketstruktur verfeinern.
Entwurf:
Modellierung der Datenhaltung
(z.B. mit ER-Diagrammen)
und des Datenzugriffs.
10
DBIS - SS2006
Guideline:
Wie kommt man von UML zu Java?
Implementierung:
1:1 Implementierung der Entwurfsklassen.
Sequenz- und Aktivitätsdiagramme für
Kontrollfluss und evtl. für die GUI.
Zustände als Attribute und/oder persistent
in der Datenbank.
Tests und Dokumentation während des
gesamten Projekts und insbesondere am
Ende.
11
DBIS - SS2006
GUIDELINE
Wie kommt man von UML zu Java?
am Fallbeispiel „Videothek“
12
DBIS - SS2006
ANALYSE Æ Anforderung
Mit dem Kunden eine
Anforderungsanalyse machen
13
DBIS - SS2006
Anforderungsanalyse
Fallbeispiel „DVD-Videothek“:
Entwurf und Implementierung eines
Verwaltungsprogramms für den Verleih von DVDs.
DVDs können neu in das System hinzugefügt, vorbestellt, ausgeliehen
und zurückgegeben werden. Eine DVD kann in mehreren Exemplaren
vorliegen. Verlorene und defekte DVDs können aus dem System
wieder entfernt werden.
Für Kunden kann ein Konto angelegt werden, auf das die
ausgeliehenen und vorbestellten DVDs gebucht werden. Bei der
Rückgabe ermittelt das System automatisch den zu zahlenden Preis.
Kunden können die Datenbank nach Filmen durchsuchen (Titel,
Schauspieler oder Regisseur).
14
DBIS - SS2006
ANALYSE Æ Anforderung
Pflichtenheft, veraltet?
15
DBIS - SS2006
Pflichtenheft
• Zielbestimmung:
Verwaltungsprogramm für DVD-Film-Verleih
• Einsatz: kleine Videotheken
• Zielgruppe: Videothekar, Kunden
• Software: Windows XP
• Hardware: PC-Rechner
• Daten: 10000 DVDs, 100 Kunden
• ...
16
DBIS - SS2006
Nichtfunktional Anforderungen
Neben den funktionalen Anforderungen gibt es
auch nichtfunktional wie z.B.:
• Usability (Bedienbarkeit)
• Effizienz, Performance,
Leistungsanforderungen
(Antwortzeit, Ressourcenverbrauch,
Verfügbarkeit)
• Wartbarkeit, Wiederverwendbarkeit
• Randbedingungen
(Gesetze, Verordnungen)
17
DBIS - SS2006
ANALYSE Æ OOA-Model
Aus der Anforderungsanalyse
ein Use Case - Diagramm
erstellen
18
DBIS - SS2006
Use Case - Diagramm
(Anwendungsfall-, Geschäftsprozess-)
Videothek
DVD vorbestellen
DVD-Bestand
durchsuchen
«uses»
DVD ausleihen
«extends»
«extends»
«extends»
«uses»
Videothekar
Kunde
... nach Titel
... nach Regisseur
Kunde
identifizieren
... nach
Schauspieler
DVD zurückgeben
Kunde neu anlegen
Was leistet mein System für seine Umwelt?
Hohes Abstraktionsniveau, einfache Notationsmittel.
19
DBIS - SS2006
ANALYSE Æ OOA-Model
Ausfüllen der Use CaseSchablone für die Use Cases
und Erstellen von
Aktivitätsdiagrammen
20
DBIS - SS2006
Use Case „DVD ausleihen“
Use Case Schablone (orange Felder zuerst ausfüllen)
USE CASE 1
Ziel
Level
Vorbedingung
Nachbedingung Erfolg
Nachbedingung
Fehlschlag
Akteure
Auslösendes Ereignis
21
DVD AUSLEIHEN
DVD ist ausgeliehen und auf Kundenkonto gebucht.
Primärer Task
∈ (Zusammenfassung, Primärer Task, Subfunction)
DVD vorhanden, Kunde registriert.
1. Kunde hat DVD ausgeliehen.
DVD ist auf Kundenkonto gebucht.
2. Kunde kann DVD vorbestellen.
DVD ist auf Kundenkonto als vorbestellt gebucht.
1. Kunde hat keine DVD ausgeliehen.
Kunde, Videothekar
Kunde äußert Wunsch eine DVD auszuleihen.
DBIS - SS2006
Use Case „DVD ausleihen“
BESCHREIBUNG
Schritt Aktion
1
Kunde äußert DVD-Ausleih-Wunsch.
2
Videothekar prüft ob DVD vorhanden.
3
Kunde wird im System identifiziert. (Use Case 2)
4
Videothekar gibt Kosten-Auskunft.
5
Kunde unterschreibt Ausleih-Formular.
6
Videothekar bucht DVD auf Kundenkonto.
7
Videothekar gibt die DVD dem Kunden.
ERWEITERUNGEN Schritt Aktion
ALTERNATIVEN
22
2a
DVD ist nicht vorhanden: Kunde kann DVD
vorbestellen.
3a
Kunde ist nicht registriert: Kunde neu anlegen.
Schritt Aktion
DBIS - SS2006
Use Case „DVD ausleihen“
ZUSÄTZLICHE INFORMATION 1 - DVD AUSLEIHEN
Priorität
höchste
Dauer
5 Minuten
Frequenz
50/Tag
Offene Fragen
Was wenn DVD vorhanden aber
nicht im Regal?
Super Use Case
-
Sub Use Case
Kunde identifizieren
23
DBIS - SS2006
[Kunde möchte DVD leihen]
Aktivitätsdiagramm
DVD suchen
“DVD ausleihen“
(AKTIVITÄT)
[DVD ausgeliehen]
(ENTSCHEIDUNG)
Wie läuft ein bestimmter
flussorientierter Prozess?
Sehr detaillierte
Visualisierung
von Abläufen mit
Bedingungen, Schleifen,
Verzweigungen,
Parallelisierung und
Synchronisation.
[DVD vorhanden]
[Kunde möchte DVD
vorbestellen]
DVD vorbestellen
Kunde identifizieren
[DVD im Regal gefunden]
DVD ausleihen
Diese Aktivität könnte
wiederum in einem
eigenen, neuen
Aktivitätsdiagramm
dargestellt (verfeinert)
werden.
MS Visio
24
Grundlagen der Programmierung II
DBIS - SS2006
ANALYSE Æ OOA-Model
Erstellen von
Klassendiagrammen
25
DBIS - SS2006
Klassendiagramm
DVD
schauspieler
regisseure
titel
status
erfassen()
ausleihen()
zurückgeben()
vorhanden()
vorbestellen()
freigeben()
entfernen()
leiht
0..*
0..1
Ausleihe
datum
Kunde
name
telefon
1
1
Adresse
strasse
plz
stadt
Aus welchen Kernklassen besteht mein System
und wie stehen diese untereinander in Beziehung?
Beschreibt die statische Struktur.
26
DBIS - SS2006
ANALYSE Æ OOA-Model
Darstellung von Szenarios in
Sequenzdiagrammen
27
DBIS - SS2006
Szenario
Ein Szenario ist eine chronologische Sequenz von
Verarbeitungsschritten, die unter bestimmten
Bedingungen auszuführen ist.
Diese Schritte sollen das Hauptziel des Akteurs
realisieren und ein entsprechendes Ergebnis liefern.
Sie beginnen mit dem auslösenden Ereignis und werden
fortgesetzt, bis das Ziel erreicht ist oder aufgegeben wird.
Æ Modellierung durch Sequenzdiagramme
28
DBIS - SS2006
Sequenzdiagramm
:Kunde
DVD
::
Ausleihwunsch()
“DVD ausleihen“
:Ausleihe
vorhanden ()
Kunde
identifizieren ()
Wer tauscht mit
wem welche
Informationen in
welcher Reihenfolge
aus?
ja/nein
ALT
[istVorhanden] ausleihen ()
DVD bei Kunde als gebucht vermerken()
[nichtVorhanden] vorbestellen ()
DVD bei Kunde als vorbestellt vermerken()
29
Grundlagen der Programmierung II
DBIS - SS2006
ANALYSE Æ OOA-Model
Optional: Erstellung von
Zustandsdiagrammen oder
anderen Diagrammtypen
30
DBIS - SS2006
Zustandsdiagramm
“DVD“
neue DVD gekauft / erfassen()
vorhanden
EclipseUML
Omondo
Abholfrist vorbei / freigeben()
DVD defekt / entfernen()
Ausleihwunsch / ausleihen()
Kunde bringt DVD zurück / zurückgeben()
zur Abholung bereit
ausgeliehen
Kunde holt DVD ab / ausleihen()
DVD verloren / entfernen()
Welche Zustände
kann ein Objekt,
bei welchen Ereignissen
annehmen?
31
Ausleihwunsch / vorbestellen()
vorbestellt
Kunde bringt DVD zurück / zurückgeben()
DBIS - SS2006
ENTWURF Æ Architektur
Entscheidung für eine
Architektur in Abhängigkeit von
den Vorgaben
32
DBIS - SS2006
Architektur
Die Architektur ist oft von Anfang an vorgeben,
da der Kunde z.B. bestimmte Technologien
verwenden möchte.
Hier entscheiden wir uns für:
• 3-Schichten-Architektur
(Datenbank, Logik, Präsentation)
• Entwicklung als Java 1.5 - Applikation mit
– Präsentation: Swing (Java GUI)
– Datenbank: MySQL-Datenbank mit JDBC-Zugriff.
33
DBIS - SS2006
ENTWURF Æ Prototyp
Entwurf eines Prototyps und
“Proof of Concept“
34
DBIS - SS2006
Prototyp: Erfassen - DVD
Beispiel für eine einfach Oberfläche zum
Erfassen einer neuen DVD.
35
DBIS - SS2006
Prototyp
• Für die Modellierung der tatsächlichen
GUI und deren Dialogstruktur kann ein
Zustandautomat verwendet werden.
• Mehr dazu in:
H. Balzert, „Lehrbuch der
Objektmodellierung“, Spektrum Verlag.
36
DBIS - SS2006
Proof of Concept
• Test, durch den die prinzipielle
Durchführbarkeit des Projekts belegt
wird.
• Falls ein Prototyp vorhanden ist, kann
dieser mit Kernfunktionalitäten
ausgestattet werden, die alle
Technologien koppeln und deren
reibungsfreies Zusammenspiel testen.
37
DBIS - SS2006
ENTWURF Æ OOD-Model
Erweiterung des Klassendiagramms
um implementierungsspezifische
Parameter
38
DBIS - SS2006
OOD-Model
• Klassendiagramm wird an
Programmiersprache angepasst
(z.B. wie kann eine Mehrfachvererbung
realisiert werden?)
• Welche Methoden, Attribute sollen sichtbar
sein (Zugriffsmodifizierer) ?
• Welche Entwurfsmuster (design patterns)
können eingesetzt werden?
• Welche vorhanden Komponenten können
genutzt werden?
39
DBIS - SS2006
OOD-Model
OOA
Kunde
name
telefon
Æ
OOD
Kunden
-anzahl : int
+getKundenliste()
1
1
*
1
Adresse
strasse
plz
stadt
Zugriff auf private Attribute (-)
wird über Getter- und SetterMethoden ermöglicht (welche
hier nicht explizit genannt werden).
40
Kundenkonto
-id : int
-name : string
-vorname : string
-telefon : int
-strasse : string
-plz : int
-stadt : string
• Klassen, Methoden
Attribute und
Assoziationen wurden
neu hinzugefügt oder
verändert.
• Zugriffsmodifizierer
und Datentyp wurden
hinzugefügt.
DBIS - SS2006
ENTWURF Æ OOD-Model
Paketstruktur verfeinern
41
DBIS - SS2006
OOD-Model
Paketstruktur
• Beispiel für 3-Schichten-Architektur
«importieren»
core
dao
«importieren»
gui
• Üblicherweise hat man Pfade (Pakete) wie:
de.firmenname.appname.gui
42
DBIS - SS2006
IMPLEMENTIERUNG Æ JAVA
Wie bekommen wir aus UML
Java-Code?
43
DBIS - SS2006
Implementierung
Model Driven Architecture (MDA)
• Neuer Standard von OMG
• Modell in mehrere Schichten aufgeteilt:
– Für die umgangssprachliche Beschreibung (CIM)
– Geschäftsprozesse (PIM)
– Architektur, Services (PSM)
• MDA versucht Vorschriften zu finden wie aus
einem Model der Code automatisch generiert
werden kann.
Æ Diese Aufgabe ist nicht trivial!
44
DBIS - SS2006
Implementierung
Vereinfacht:
• 1:1 Implementierung der Entwurfsklassen.
• Sequenz- und Aktivitätsdiagramme
für den Kontrollfluss (“wer ruft wenn auf“)
und eventuell für die GUI.
• Zustände des Zustandsdiagramms
als Attribute und/oder
persistent in der Datenbank.
45
DBIS - SS2006
Klasse DVD
public class DVD {
private
private
private
private
private
String title;
String status;
ArrayList schauspieler;
ArrayList regisseure;
String id;
Title
Status
Schauspieler
Regisseure
ID für Datenbank
public final static String STATUS_AUSGELIEHEN = "ausgeliehen" ;
public final static String STATUS_VORBESTELLT = "vorbestellt" ;
public final static String STATUS_VORHANDEN = "vorhanden" ;
Diese Konstanten könnten auch mit einer Enumeration
realisiert werden (Schlüsselwort enum).
...
46
DBIS - SS2006
Klasse DVD
public Dvd() {}
public Dvd(String id, String title){
this.id = id;
this.title = title;}
Zwei Beispiele für
Konstruktoren
public boolean isAusleihbar(){
return status.equals(Dvd.STATUS_VORHANDEN);}
public String getStatus(){
return status;}
public void setStatus(String status){
this.status = status;}
47
Test ob eine DVD
ausleihbar ist.
Für alle Attribute hat die Klasse
getter- und setter-Methoden.
Beispiel für das Attribut status.
DBIS - SS2006
Klasse DVDBestand
import java.util.*;
public class DVDBestand {
private Map liste = new HashMap();
public Map getListe() {
return liste;}
public void setListe(Map dvds) {
liste = dvds;}
private Attribut liste enthält alle
DVDs der Videothek (mehr zu
HashMaps später).
Auch hier wieder getter- und setterMethoden notwendig.
public void ladeDvdsAusDatenbank(){
/* hier muss der DVD-Bestand aus der Datenbank gelesen
werden und in das Attribut liste gespeichert werden.
Mehr dazu in den nächsten Vorlesung.*/
}
...
48
DBIS - SS2006
Klasse DVDBestand
Diese Methode prüft ob die DVD überhaupt im Bestand existiert
und zusätzlich nicht ausgeliehen ist:
public boolean isDvdVorhanden(String title) {
Collection dvdCol = liste.values();
Iterator iterator = dvdCol.iterator();
boolean vorhanden = false;
while (iterator.hasNext() && !vorhanden) {
Dvd eineDvd = (Dvd) iterator.next();
if (eineDvd.getTitle().equals(title)) {
if (eineDvd.isAusleihbar()) {
vorhanden = true;
}
}
} return vorhanden;
...
49
DBIS - SS2006
TEST und DOKU Æ
Tests und Dokumentation
während des gesamten
Projekts und insbesondere am
Ende
50
DBIS - SS2006
Test
• Vorab: Testplan
• Entwicklertest (JUnit, White-Box)
• Technischer Durchstich
(bei komplexen Systemen)
• Integrationstest
• Performance- / Lasttest
• Abnahmetest (Testfälle)
• Pilot (Pre Prod)
• Rollout (Produktion)
51
DBIS - SS2006
Dokumentation
• Installationsanleitung
• Benutzerhandbuch (für User)
• Online-Hilfe, FAQ (für User)
• Betriebshandbuch (für Admin)
• Code Doku (javadoc)
52
DBIS - SS2006
Herunterladen