Monday, November 19, 2007

Ein Bug gekillt ...

... habe ich eben gerade. Der Fehler ist aufgetreten in einem Realtime-Schedule-Display, wenn gerade der Zeitbalken aus dem sichtbaren Fenster gelaufen ist und das Fenster dann (automatisch) wieder auf den Zeitbalken angepasst wurde. Wenn man dann einen neuen Schedule eingetragen hat, wurde dieser an der komplett falschen Stelle gezeigt, die Zeitanzeige und der Zeitbalken aber genau richtig.
Es war ein Fehler, der den Kunden sehr gestört hat, also auch uns. Desweiteren wurde der Programmcode nicht von mir, sondern von einem anderen Entwickler (Freelancer) produziert, was eine Zunahme der Schwierigkeit mit sich bringt, da man sich in fremdem Code schlechter Auskennt als in eigenem. Außerdem ist dem Problem mit Debuggen fast nicht beizukommen, da es sich um ein Realtime Display handelt. Also versucht man mit System.out.println()-Ausgaben das Problem zu analysieren. Nach diesen Ausgaben musste das Display eigentlich richtig aussehen.
Es stellte sich heraus, das ein fehlendes Emittieren eines Property-Change-Signals in der Anpassung des angezeigten Zeitfensters schuld war, d.h., wann immer im Programm das angezeigte Zeitfenster aktualisiert wurde, wurde kein Signal ausgesendet, dass sich das Zeitfenster aktualisiert hat.
Der Fehler hatte also folgenden Ablauf:
1) Ein Schedule wurde erstellt.
2) Die Position des Schedules wurde festgelegt.
3) Das Zeitfenster wurde angepasst, die (jetzt fehlerhafte) Position der einzelnen Schedules wurde beibehalten, Zeitleiste und Zeitbalken wurden aktualisiert.
Klingt jetzt alles sehr einfach, aber da ja 1) und 2) völlig korrekt abgearbeitet werden, kommt man nicht so einfach auf 3), da erst einmal kein direkter Zusammenhang wahrgenommen wird.

So. Interessiert zwar keinen, ist sehr technisch, aber mich hat es sehr gefreut, dass Problem gelöst zu haben, da ich schon ein paar Stunden gebraucht habe, um das heraus zu finden.

No comments: