Wellen

Menu:

Neuigkeiten:

5. Januar 2007:
Version 1.1 zum Download verfügbar.

12. September 2006:
Final-Version zum Download freigegeben.

Abonnieren (Englisch) abonnieren (Englisch)

J. Bixbe

Infos:

jBixbe wird seit 2003 entwickelt und enthält eine ganze Reihe neuer Konzepte, um das Debugging von komplexen Java-Programmen zu vereinfachen.

Links:

- Java
- UML
- ds-emedia

Beispiel für Multithread-Debugging

jBixbe stellt Threads unabhängig voneinander dar und ist somit gut zur Analyse von Multithread-Programmen geeignet. Das soll an einem kleinen Beispiel verdeutlicht werden: Untersucht wird das Raucherproblem, ein typisches nebenläufiges Szenario, bei dem drei Raucher in einem Lokal an einem Tisch sitzen und von einer Wirtin bedient werden. Um rauchen zu können, benötigen sie Papier, Tabak und Hölzer. Jeder Raucher besitzt bereits eines der drei Utensilien im Überfluss. Zwei Utensilien legt die Wirtin in bestimmten Abständen auf den Tisch und jeder Raucher greift dann sofort nach den ihm noch fehlenden Utensilien.

Schnappschuss

Das Szenario lässt sich mit jBixbe wie folgt abbilden: Ein Strukturdiagramm dient zur Einsicht in den Grundaufbau des Programms. Daran erkennt man bereits, ob das Szenario sinnvoll modelliert wurde oder nicht. Interessant ist das Tisch-Objekt, dessen Attribute aufzeigen, welche Utensilien gerade auf dem Tisch liegen. Wie die Thread-Übersicht zeigt, sind Raucher und Wirtin eigenständige Threads und für jeden Thread wird nun noch ein eigenes Sequenzdiagramm angelegt, das die Kommunikation des jeweiligen Thread-Objektes mit dem Tisch-Objekt darstellt.

Nachdem alle Diagramme angelegt sind, lässt sich das Szenario schrittweise fortsetzen. Dabei bestimmt jBixbe selbstständig, wie das Szenario zu steuern ist, damit keine wichtige Ereignisse übersprungen werden. Man kann jedoch das Szenario auch automatisch ablaufen lassen. Die letzte Variante ist interessant, wenn mit "timeouts" gearbeitet wird.

Die Abbildung reicht vollkommen aus, um beurteilen zu können, ob ein nebenläufiges Programm nach den Vorgaben arbeitet, ob beispielsweise Verklemmungen (deadlocks) auftreten oder ob ein unsynchronisierter Zugriff auf bestimmte Variablen erfolgt. Der Einblick in den Quellcode des Szenarios ist dazu nicht zwingend erforderlich.

zurück zur Übersicht