A e l i t h aA e l i t h a 25.01.2005A. Wardaschko M. Brenda S. Brauch J. Stoltmann Aelitha Was ist...
-
Upload
selma-allers -
Category
Documents
-
view
107 -
download
0
Transcript of A e l i t h aA e l i t h a 25.01.2005A. Wardaschko M. Brenda S. Brauch J. Stoltmann Aelitha Was ist...
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
AelithaWas ist Aelitha?
• ein Play-by-eMail Spiel
•• ein anspruchsvolles SciFi-
Rollenspiel •• ein Gemeinschaftsprojekt
•
Spiel läuft seit über vier Jahrenca. 60 Spieler
Deutschland, Schweiz, Österreich
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Projekt-Ziele (1)
• Neuimplementierung der Spielleiter - Software
• Kompletter Neuentwurf der Datenbank• Übernahme der alten Datenbestände• Internationalisierung• Java als plattformübergreifende
Sprache
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Projekt-Ziele (2)
• Einfache Auslieferung – Java Web Start
• Logging (Java Logging, Trigger)• Druckfunktionalität• Grundlegende
Administrationsfunktionen
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Projekt-Ziele (3)
• Gute Performance• Möglichst hohe Sicherheit• GUI für die Spieler
– Import und Export von Daten (vCards, Objektdaten)
– Erstellung verschiedener Objekte (Nebel, Planeten, Asteroiden)
– Übersicht der Ressourcen / Objekte– Diplomatie-Optionen
(Datenaustausch unter den Spielern)
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Verwendete Werkzeuge (1)
• Eclipse 3.0Entwicklungsumgebung
• Linux – Server (Debian)Datenbank, SVN-Repository
• PostgreSQLAls Datenbank, zuerst 7.2.4 später 7.4.6
• Subversion, Subclipse / TortoiseZentrales Repository
• MindManagerProjektplanung, Ideensammlung,
Aufgabenzuordnung
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Verwendete Werkzeuge (2)
• MS Visio 2003Diagramme für Planung und Visualisierung
• Aquastudio / PGAdmin IIIDatenbankzugriff: Tabellen anzeigen
Abfragen durchführen
• Clay Database ModellingDB-Entwurf, SQL-Erzeugung für Anlegung der Tabellen
• Borland Together for EclipseUML-Modellierung
• FATJAR (Ersatz für ANT)JAR-File - Erstellung mit korrekten Manifest Einträgen
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Getestete Software (1)- und warum Sie nicht verwendet wurde -
• Visual Editor Project (VEP)Erstellung grafischer Oberflächen per Drag&Drop– Code-Overhead– Verleitet zur Verwendung nicht aussagekräftigen
Variablennamen– unverträglich mit dem verwendeten Layoutmanager und
speziellen Komponenten
• ANTAutomatisiert den Build-Prozess (Kompilierung, Signierung,
Upload)– Generierung der Manifest-Datei nicht wie gewünscht– Verbergen der Passworte wurde nicht umgesetzt
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Getestete Software (2)- und warum Sie nicht verwendet wurde -
• DoxygenBessere Dokumentation als mit JavaDoc– Spezielle Kommentierungsfunktionen im SourceCode wurden
nicht eingesetzt – Ausgabe erfolgt nicht wie gewünscht
• Datenbanksichere Swingkomponenten (SwingSet)Sorgenfreie Datenbankanbindung– erhaltene Datenbank-Verbindungen werden nicht frei gegeben– erfordert doppelte Abfragen (bei Objekterstellung & vor
Schreiben)
• JAAS (Java Authentication & Authorization Service)Framework für Authentifizierung und Autorisierung– zu mächtig / nicht notwendig
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Eigene Implementierungen
• Angepasste Tabellen– SQL Table
(Füllung der Tabelle direkt durch RowSet-Übergabe)
• Modifizierte JTree – Komponente– Eigene Icons– Checkboxen
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Entwürfe der GUI
• Planung / Erstentwürfe– Zeichnungen– Powerpoint
• Spätere Überarbeitung der fertigen Oberfläche– Direkt in Eclipse
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a- GUI Entwürfe
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a- GUI Entwürfe
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a- GUI Entwürfe
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Datenbank-Modellierung mit »Clay«
• DB-Modellierung war sehr aufwändig.• Nachbesserungen immer wieder notwendig
trotz intensiver Planungsphase– Vergessene Aspekte / Spalten– Vereinfachung der Programmierung
• Vereinfachungen für die komplexen Abfragen wurden bis zum Schluss gesucht
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
AbfragenkomplexitätSELECT name, sum(summe) FROM (SELECT name, sum(amount) AS summe FROM production_asteroid, spec_productionWHERE data_asteroid.id_races =? AND production_asteroid.active = trueAND data_asteroid.id = id_data_asteroidAND id_spec_productiontype = (SELECT id FROM spec_productiontype WHERE type='Material')AND id_spec_production = spec_production.id GROUP BY name
UNION ALL
SELECT name, sum(amount) AS summe FROM…) AS production GROUP BY name ORDER BY name
SELECT name, sum(amount) FROM data_asteroid_planet, production_asteroid_planet, spec_productionWHERE data_asteroid_planet.id_races=?AND id_data_asteroid_planet = data_asteroid_planet.idAND production_asteroid_planet.active=trueAND id_spec_productiontype = (SELECT id FROM spec_productiontype WHERE type='Material')AND id_spec_production = spec_production.id GROUP BY name ORDER BY name
- Datenbank-Design
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Datenimport Access PostgreSQL
• Einrichtung einer ODBC-Brücke– Komplette Datenübertragung ca. zwei Stunden
• Probleme / Hindernisse– Strukturelle und logische Fehler der alten DB
• Zusammenfassung verschiedener Spalten in einer Zelle
– Rechtschreibfehler in der alten DB• Weitgehend durch Mapping-Tabellen gelöst
– Mehrfacherfassung der Daten, ungültige Datensätze
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
UML & Visio
• UML– Modellierung der logischen Strukturen– Klassenbeziehungen
• Visio– Ablaufdiagramme
• Würfelung eines Planeten• Erschaffung eines Sternensystems
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a- UML Sequenzdiagramm
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a- Würfelung eines Planeten
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Aufgetretene Probleme (1)
• Elementares Wissen musste erarbeitet werden– Wie wechselt man in SWING die Panels in einer
GUI– JTable, JList, JTree – Darstellung- und
Modelanpassung– Validierung der Benutzereingaben, Filter usw.– Arbeit mit einem zentralen Repository
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Aufgetretene Probleme (2)
• Zahlreiche ProgrammierungsproblemeSUNs Implementierungfehler in Rowsets (Tiger 5). Da die Fehlermeldung – NullPointer Exception - nicht eindeutig war führte der Weg über die Prüfung der eigener Klassen und Dekompilierung der Sun Implementierung zum Auffinden des Problems. Erst danach konnten bestätigende Hinweise im Internet gefunden werden.
FehlerursacheAls Locale wurde US-Locale fest einprogrammiert, sonst Nullpointer Exception.
Zwei Workarounds:Pro Land eine neue Property-Datei in der JAR-DateiDoppelte Initialisierung
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Aufgetretene Probleme (3)
• Doppelte Initialisierung:
private CachedRowSetImpl getRowSet() throws SQLException { try { rowsetUserData = new CachedRowSetImpl(); } catch( NullPointerException npe ) { npe.printStackTrace(); // on second try the default bundle should be used rowsetUserData = new CachedRowSetImpl(); } return rowsetUserData;}
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Geplante Erweiterungen
• Sicherung der Verbindung mit SSL• Admin-Bereich• Verknüpfung der Planetengenerierung mit der GUI• Bessere Modularisierung• Programmhilfe
– JavaHelp oder mit DocBook• Drucklösung
– Freie Reportingsysteme decken die Bedürfnisse nicht ab.– Der einfachste Weg wird wohl über HTML sein.
• Datenexport– Textdateien und evtl. PDF / Excel
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Status
•Implementierung der angestrebten Funktionen:
– ca. 60 % - 65 %
•Ausgeliefert an die Spieler?– Nein
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
AelithaWir sagen herzlichen Dank an
• Prof Dr. Hinkelmann für Projektbetreuung und Beratung in Datenbank-Fragen
• Prof. Kriha für die ausführliche Besprechung des Sicherheitskonzeptes
• Intelligent Management Solutions für die Bereitstellung von Besprechungsräumen und Beamer
• Urs Schweri für die Aufbereitung der alten Daten
• Jan Koutny für die Visualisierung der alten Codeabläufe
• Andrea Wollens und alle anderen Spieler, die schon seit Jahren mit Begeisterung und Einsatz das Aelitha Universum formen
25.01.2005 A. Wardaschko • M. Brenda • S. Brauch • J. Stoltmann
A e l i t h a
Externe Komponenten
• Icons: http://www.foood.net/• Look & Feel http://www.jgoodies.com• Layout Manager http://www.clearthought.info/software/
TableLayout/• Navigationsleiste http://common.l2fprod.com/• Connection Pooling http://homepages.nildram.co.uk/~slink/
java/DBPool/• CachedRowset (Sun) /products/jdbc
/download.html#rowset1_0_1• JConsole http://sourceforge.net/projects/zeus-jscl/• Java Mail (Sun): http://java.sun.com/products/javamail/
/products/javabeans/glasgow/jaf.html