Softwarepraktikum WS 99/00 Das Softwaresystem Jazz Beispiel für einen konsequent objektorientierten Entwurf Tobias Bosch, Uwe Bubeck Jazz - Gesamtkonzeption • Objektorientierter Ansatz mit Datenbankobjekten und Verwaltern • Datenbankzugriff auf wenige Programmstellen konzentriert und gekapselt • Datenkonsistenzprüfung erfolgt in den einzelnen Verwaltern • Vererbung konsequent ausgenutzt. Ergänzt durch intensive Verwendung virtueller Methoden, polymorpher Objektlisten und Methodenzeiger Jazz - Klassendiagramm TImEx (ImEx) Intern Extern TTNVerw (Teilnehmer) TObject TImExAngeb (ImEx) TVeranstVerw (Veranstaltung) Nummer VGrp Zusatz Items TZusatzVerw (Zusatzleistung) TBestellung (Bestellung) TDBObject (DBObjekt) TVerwalter (Verwalter) Teilnehmer Zusatz Menge TID Verwalter BeenNotified OnNotify Table TWunsch (Wuensche) Duplicate Notify Create Destroy Teilnehmer Veranstaltung Prior TVGrpVerw (Veranstaltung) TPartnerVerw (Partner) Create ObjNeu Löschen Speichern AlleLesen TZuteilung (Zuteilung TTeilnehmer (Teilnehmer) Teilnehmer Veranstaltung Fest AnPerson Anrede Titel Name Adresse Firma Abteilung Telefon Telefax EMail Bezahlt IstProblemfall Anmeldedatum Kommentar TDBObjRefList (Verwalter) TObjList (ObjList) TWunschVerw (Wuensche) TBestVerw (Bestellung) TPartnerwunsch (Partner) Teilnehmer Partner VGrp TObjRefList (ObjList) TImExVerw (ImEx) TVGruppe (Veranstaltung) TAngebot (Angebot) Titel Kuerzel Nummer Titel Beschreibung Limit TZusatzleistung (Zusatzleistung) TVeranstaltung (Veranstaltung) Gebuehr Standard VGrp Ort Zeit Referent TImExAngebVerw (ImEx) TZuteilung* (Zuteilung) TDBObjList (Verwalter) Jazz - Nachrichtenfluß • Observer-Pattern NotifyMethode • Subject: Verwalter onNotify DBObjekt DBObjekt Dialog • Observer: DBObjekte, ObjektListe Duplikat Attach Referenz DBObjekt DBObjekt onNotify Verwalter ObserverListe ObjektListe Lesen Speichern Datenbank Dialoge Jazz - Steuerung der Oberfläche • Grundlage: „Model-View-Controller“-Modell • Abstraktion von der tatsächlichen Datenstruktur • Universell verwendbare Steuerungsroutinen kümmern sich um Einfügen, Aktualisieren, Löschen, Sortieren von Objekten in: Mehrbenutzerfähigkeit: Client-Server-Architektur mit Distributed COM (DCOM) Uwe Bubeck JazzServer - Entwurfsidee • Motivation: ereignisbasiertes Formularsystem innerhalb des Programms auch für Inter-ProzeßKommunikation geeignet • Fernziel: Mehrere Sachbearbeiter können eine Akademiedatei gleichzeitig bearbeiten, mit sofortiger Synchronisation auf allen Rechnern • Designstudie nur wenige Änderungen gegenüber der Standalone-Version, insbesondere gemeinsame Codebasis JazzServer - Systemmodell • Client-Server-Architektur • JazzClient entspricht Standalone-Version, aber Datenbankzugriff „abgeklemmt“. Statt dessen Versorgung mit Objekten und Änderungsereignissen durch Server. Verwalterstruktur unverändert, d.h. lokale Kopie der Objekte im RAM für Lese-Zugriffe • JazzServer übernimmt bisherigen Systemkern, aber eigene Oberfläche und zusätzliche Routinen zur Verwaltung und Benachrichtigung von Client-Applikationen JazzServer - Systemdiagramm DBObjekte JazzClient Verwalter Connect Notify Disconnect DBObjekte JazzServer ClientListe Verwalter Lesen Speichern Datenbank • Synchronisation zwischen Client und Server nur an zwei Stellen im Programm: Speichern und Löschen im abstrakten Verwalter • In Designstudie noch nicht vollständig implementiert: Auflösung widersprüchlicher Aktionen (Transaktionskontrolle) JazzServer - DCOM?!? • Kommunikation über Distributed COM (DCOM): um Netzwerkfähigkeit erweitertes Component Object Model (COM) • Vorteil: Weitgehende Abstraktion von physikalischem Datentransfer. Über Interfaces lassen sich entfernte Objekte wie lokale Objekte ansprechen. Als Microsoft-Technologie große Verbreitung • Nachteil: Noch nicht voll ausgereift, geringere Geschwindigkeit