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