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 Case- Schablone 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 Kunde «extends» «extends» «extends»... nach Titel «uses» Kunde identifizieren Videothekar... nach Regisseur... 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 Case- Schablone 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 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. 21 DBIS - SS2006
Use Case DVD ausleihen BESCHREIBUNG Schritt Aktion ERWEITERUNGEN 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. 2a 3a ALTERNATIVEN Schritt Aktion DVD ist nicht vorhanden: Kunde kann DVD vorbestellen. Kunde ist nicht registriert: Kunde neu anlegen. 22 DBIS - SS2006
Use Case DVD ausleihen ZUSÄTZLICHE INFORMATION Priorität Dauer Frequenz Offene Fragen Super Use Case - Sub Use Case 1 - DVD AUSLEIHEN höchste 5 Minuten 50/Tag Was wenn DVD vorhanden aber nicht im Regal? Kunde identifizieren 23 DBIS - SS2006
Aktivitätsdiagramm DVD ausleihen Wie läuft ein bestimmter flussorientierter Prozess? (ENTSCHEIDUNG) [Kunde möchte DVD leihen] DVD suchen [DVD vorhanden] (AKTIVITÄT) [DVD ausgeliehen] [Kunde möchte DVD vorbestellen] Sehr detaillierte Visualisierung von Abläufen mit Bedingungen, Schleifen, Verzweigungen, Parallelisierung und Synchronisation. MS Visio Kunde identifizieren [DVD im Regal gefunden] DVD ausleihen DVD vorbestellen Diese Aktivität könnte wiederum in einem eigenen, neuen Aktivitätsdiagramm dargestellt (verfeinert) werden. 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 DVD ausleihen Wer tauscht mit wem welche Informationen in welcher Reihenfolge aus? ALT Ausleihwunsch() :Ausleihe Kunde identifizieren () vorhanden () ja/nein [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() EclipseUML Omondo DVD defekt / entfernen() vorhanden Abholfrist vorbei / freigeben() Ausleihwunsch / ausleihen() Kunde bringt DVD zurück / zurückgeben() DVD verloren / entfernen() ausgeliehen Kunde holt DVD ab / ausleihen() zur Abholung bereit Welche Zustände kann ein Objekt, bei welchen Ereignissen annehmen? vorbestellt Ausleihwunsch / vorbestellen() Kunde bringt DVD zurück / zurückgeben() 31 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 OOD Kunde name telefon 1 1 Adresse strasse plz stadt Zugriff auf private Attribute (-) wird über Getter- und Setter- Methoden ermöglicht (welche hier nicht explizit genannt werden). Kunden -anzahl : int +getkundenliste() 1 * 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. 40 DBIS - SS2006
ENTWURF OOD-Model Paketstruktur verfeinern 41 DBIS - SS2006
OOD-Model Paketstruktur Beispiel für 3-Schichten-Architektur core «importieren» 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 String title; private String status; private ArrayList schauspieler; private ArrayList regisseure; private 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);} Test ob eine DVD ausleihbar ist. public String getstatus(){ return status;} public void setstatus(string status){ this.status = status;} Für alle Attribute hat die Klasse getter- und setter-methoden. Beispiel für das Attribut status. 47 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 setter- Methoden 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