Subversion mit BlueJ (mit Beispielprojekt Sequenzdiagramm)

(Die gute Nachricht für Informatiklehrer vorweg: Wer BlueJ zu Hause installiert hat, kann das gleich ausprobieren, ohne irgendetwas installieren zu müssen.)

Die schlechte Nachricht 2015: Google stellt das Codehosting ein, so dass die Links unten nicht mehr funktionieren. Eine Alternative ist sourceforge.net, wo allerdings – anders als bei Google – kaum ein Schüler bereits einen Account haben dürfte.
Die Adresse für das Beispielprojekt lautet jetzt:
svn.code.sf.net/p/informatik/code/trunk/
Das einfach in BlueJ beim Auschecken als Adresse angeben, Pfad und Passwort leer lassen, Benutzername ist egal – den will wohl nur BlueJ haben, falls überhaupt. Dann kann man BlueJ alle unter dieser Adresse vorhanden Projekte anzeigen lassen.

Subversion mit BlueJ.

Ist leider nicht so subversiv, wie es sich anhört. BlueJ: Das ist eine Entwicklungsumgebung für Java-Programme, die speziell für Lernende entwickelt wurde und eines der wichtigsten Werkzeuge im Informatikunterricht der 10. Klassen darstellt. Subversion: Das ist ein Programm, das es erleichtert, in einem Team gleichzeitig an einem Softwareprojekt zu arbeiten. Ein Softwareprojekt besteht normalerweise aus vielen verschiedenen Dateien, und jedes Teammitglied werkelt an seinen zugeteilten Dateien herum, muss aber gleichzeitig die Dateien der anderen benutzen. Dabei entsteht leicht ein Durcheinander, wenn es darum geht, die jeweils aktuellsten einzelnen Dateien von den verschiedenen Mitgliedern zu holen und zu einem gemeinsamen Projekt zusammenzusetzen. Außerdem will man vielleicht noch einmal auf eine alte Version einer Datei zurückgreifen können.

Subversion ist ein Programm, das auf einem Server läuft, und auf diesem Server liegen dann auch die Dateien des Softwareprojekts. Jedes Teammitglied lädt sich mehr oder weniger automatisch alle zum Projekt gehörenden Dateien in der jeweils aktuellsten Fassung von diesem Server auf den eigenen Rechner herunter, bastelt an einigen Dateien davon herum, und lädt danach mehr oder weniger automatisch die von ihm geänderten Dateien wieder auf den Server hoch. So hat jedes Teammitglied jederzeit Zugang zu aktuellen Fassungen aller Dateien. Wenn zwei Mitglieder gleichzeitig an einer Datei gearbeitet haben, dann unterstützt Subversion das Team so weit wie möglich dabei, aus den beiden konkurrierenden Version eine neue, gemeinsame Datei zu erstellen, die alle bisherigen Änderungen enthält. Das kann man bei Programmierprojekten in der 10. und 11. Jahrgangsstufe brauchen.

Das BlueJ Teamwork Tutorial (pdf) erklärt, wie man BlueJ zusammen mit Subversion einsetzt; das BlueJ Teamwork Repository Configuration (pdf) erklärt, wie man Subversion so konfiguriert, dass es mit BlueJ zusammenarbeiten kann. (Unterstützt wird von BlueJ das veraltete CVS, aber nicht das jüngere Git, die ähnliche Aufgaben wie Subversion haben.) Beide Dateien gibt es auf den BlueJ-Dokumentationsseiten.

Hier kommt aber die Kurzfassung:

I. Einrichten eines Subversion-Servers

Habe ich mir geschenkt. Stattdessen habe ich ein Projekt bei Google Code eröffnet. Google Code ist ein Dienst von Google, mit dem man Softwareprojekte kostenlos verwalten kann. Für jedes Projekt gibt es ein Wiki, Downloadmöglichkeit, Issue Tracking, und eben auch einen Subversion- oder Git-Server für die einzelnen Dateien. Zwei Nachteile: Alle Teammitglieder müssen ein Google-Konto haben, und das Projekt muss open source sein. Es kann sein, dass Schüler das nicht möchten; es kann auch sein, dass man Material bei dem Projekt verwenden möchte, zu dem man keine Veröffentlichungsrechte hat, etwa weil es aus einem Schulbuch stammt. Dann geht Google Code nicht und muss anderswoher an einen Subevrsion-Server kommen.
Für mein Projekt gilt das nicht. Es ist auch kein großes oder wichtiges Projekt; weiter unten im Blog beschreibe ich es – ein BlueJ-Beispielprojekt für die 10. Jahrgangsstufe.

Die Projektseite ist hier: http://code.google.com/p/sequenzdiagramme-mit-bluej/

II. Einrichten von BlueJ

  1. Standardmäßig sind die Teamwork-Schaltflächen ausgeblendet, deshalb erst einschalten:
    Tools/Preferences/Miscellaneous/Show teamwork controls.
  2. Zu Subversion hochladen: Tools/Team/Share this project. Muss einer einmal am Anfang machen, wenn man nicht auf anderem Weg die Dateien zu Subversion übertragen hat. Zum Testen diesen Schritt weglassen.
  3. Mit Subversion verbinden: Müssen alle Teammitglieder einmal machen. Danach wird man aufgefordert einen Speicherort für das Projekt zu erstellen. Das aktuelle Projekt bleibt unberücksichtigt, es wird auf jeden Fall ein neuer Ordner mit einem neuen Projekt angelegt. Geht so:
    Tools/Team/Checkout Project…

    Schritt 1: Daten eingeben.

    Dabei muss man Benutzernamen, Passwort, Protokoll und Adresse für den Subversion-Server eingeben. Oder wer es einfach ausprobieren möchte, nimmt als anonymer Gast an meinem unten angegeben Projekt teil. Dann kann man fast alles machen – nur eben keine Änderungen auf den Subversion-Server hochladen, weil man ja kein Teammitglied ist.
    User: anonymous (oder was auch immer)
    Passwort: leer
    Server type: Subversion
    Server: sequenzdiagramme-mit-bluej.googlecode.com/svn/trunk/
    Protocol: http (anders als Teammitglieder, die mit https arbeiten)

    Schritt 2: Projekt auswählen.

    Einfach auf “Show” klicken und nehmen, was kommt.

  4. Fertig.

Jetzt kann man mit dem Knopf “Status” die Dateien auf dem eigenen Rechner mit denen bei Subversion vergleichen.
Oder man kann mit dem Knopf “Commit…” alle selbst geänderten oder gelöschten Dateien nach Subversion hochladen. (Die Möglichkeit von Konflikten besteht.)
Oder man kann mit dem Knopf “Update…” alle von anderen Mitgliedern aktualisierte Fassungen vom Subversion-Server herunterladen.
Zur Vermeidung von Konflikten bietet es sich an, unmittelbar vor dem eigenen Arbeiten ein Update durchzuführen, und so rasch wie möglich nach dem Abschluss der eigenen Arbeit ein Commit.


Im Bild sieht man hinten die Statusmeldung, wenn man selber etwas geändert und noch nicht an den Server übertragen hat (nächster Schritt: commit), und vorne die Statusmeldung, wenn auf dem Server jemand etwas geändert hat, das man selbst noch nicht übernommen hat (nächster Schritt: update).

Subversion kann noch viel mehr, aber das sind die Features, die von BlueJ unterstützt werden und die für Schülerprojekte auch ausreichen.


Mein Beispielprojekt.

Beim objektorientierten Modellieren und Programmieren packt man Aufgaben und Eigenschaften in Portiönchen zusammen, die man Objekte nennt. Ein Objekt allein übernimmt dabei meist keine großen Aufgaben, sondern es gibt viele Objekte, die zusammenarbeiten. Zusammenarbeiten heißt: Ein Objekt bietet an, Aufträge zu erledigen. Das nennt man die Methoden des Objekts. Und ein Objekt kennt andere Objekte, deren Methoden es aufrufen kann – die es also beauftragen kann, die angebotenen Aufgaben auszuführen.

Der Ablauf dieser Zusammenarbeit, also der Kommunikation der Objekte untereinander, wird in einem Sequenzdiagramm dargestellt. Das sieht, wenn man es hinschmiert, so aus:

Ich könnte jetzt sagen, dass das so unfertig und hingeschmiert ist, weil ich in meinem Blog keine Musterlösung vorgeben möchte. Tatsächlich bin ich nur zu faul, die Skizze fertigzustellen.

Das Diagramm soll darstellen, wie sich Frau Holle von Heinz eine Party für 30 Leute organisieren lässt. Heinz beauftragt dazu seinen Freund Max, eine Musikanlage aufzutreiben, die der wiederum von seinem Freund Herbert kriegt, so dass Max sie Heinz geben kann, der damit aber noch nicht fertig ist mit der Organisation. Genauer ist das in diesen Aufgabenkärtchen für ein Rollenspiel organisiert, das ich vor der Einführung des Sequenzdiagramms durchgeführt habe:

Die Datei mit den Kärtchen – es gibt insgesamt 5 Rollen – kann man hier herunterladen. Der Auftrag für die Schüler lautet: Fünfergruppen bilden, jeder schnappt sich ein Kärtchen und führt das auf, was darin steht. Die Schüler sollen das dann in einem Rollenspiel vorführen und – ganz ohne weitere Erklärungen – einen Entwurf für ein selbst erdachtes Diagramm überlegen, in dem sie den Ablauf festhalten.

Ich habe das parallel in ein BlueJ-Projekt umgesetzt. Und dieses Projekt ist eben das, das ich bei Google Code eingestellt und oben verlinkt habe.

5 Antworten auf „Subversion mit BlueJ (mit Beispielprojekt Sequenzdiagramm)“

  1. Wow! Tolle Sache. Und das mit GoogleCode wusste ich auch noch nicht. Das werde ich wohl in der nächsten 11. mal machen.

    Zum Thema Sequenzdiagramme hätte ich noch den folgendne Link: http://www.websequencediagrams.com/
    Hier lassen sich recht schön mit einer einfach Sprache oder per Drag’n’Drop Sequenzdiagramme erstellen. Ich benutze das immer in meinen Klassen, da es aus meiner Sicht das beste Tool für diesen Zweck ist.

  2. Danke für den Link, sieht sehr gut aus. Ein Programm für Sequenzdiagramme hat mir nämlich noch gefehlt. Es gibt ein BlueJ-Addon, das nicht gut funktioniert, und StarUML ist zu umständlich, wenn man nicht eh schon alle Klassen hat. Für andere Diagramme – eigentlich nur Webseiten-Mockups – nehme ich Pencil, als Firefox-Plugin oder Standalone: http://pencil.evolus.vn/en-US/Home.aspx

  3. Hallo und H I L F E,

    da Google-Code in 2016 eingestellt wird lassen sich dort keine Projekte erstellen. Ich konnte dein Projekt
    ’ Subversion mit BlueJ (mit Beispielprojekt Sequenzdiagramm)’ mit Hilfe von Google Export nach GitHub übertragen.
    Aber wie geht´s nun weiter? Ich hab keine Ahnung was ich hier eingeben muss:

    Server type: ??
    Server: ??
    Protocol: ??

    um BlueJ mit GitHub zu verbinden. (Dein Beispiel weiter oben mit Google-Code hat prima funktioniert)

    Ich habe auch ein Konto bei GitHub … kiuziu da ist dein kopiertes Projekt im Verzeichnis

    kiuziu/sequenzdiagramme-mit-bluej

    gelandet.

    HILFE!!!!

    Gruß Manuel.

  4. Ja, leider ist es so, dass das Google-Code-Hosting eingestellt wird, so dass keine neuen Projekte mehr möglich sind und im Sommer 2015 auch die alten Projekte nur noch heruntergeladen, aber nicht mehr bearbeitet werden können. Das ist ärgerlich, da ich erst dieses Jahr begonnen habe, mit Schülern und Subversion zu arbeiten und das auch weiterhin machen möchte; Google war unter anderem deswegen sehr praktisch, weil die Schüler schon Konten bei Google hatten und das Hosting-Passwort ein anderes ist als das Google-Passwort selber, so dass sich leicht mit Dummy-Accounts arbeiten lässt.

    Google empfiehlt den Umzug zu GitHub. Dort wird, soweit ich weiß, aber nur Git angeboten, das ähnliche Aufgaben erfüllt wie Subversion – aber leider ist in BlueJ nur ein Subversion-Client integriert. BlueJ kann kein Git.

    Mögliche Lösungen:

    1. Auf den in BlueJ integrierten Subversion-Client verzichten und den BlueJ-Ordner mit einem separaten Programm synchronisieren. Dann kann man auch Git und Github verwenden.

    2. Einen anderen Anbieter finden, der Subversion-Hosting anbietet. Da ist zum Beispiel sourceforge.net. Dessen Ruf hat in letzter Zeit ein wenig gelitten, ist aber schon okay. Wenn man das mit Schülern machen würde, müsste jeder Schüler einen eigenen Sourceforge-Account haben, was etwas schwierig wäre.

    Bei Sourceforge muss man zum Beispiel Folgendes eingeben:

    User name: Beim Auschecken irgendwas, sonst der Sourceforge-Benutzername
    Password: Das dazu gehörende Passwort, beim Auschecken leerlassen
    Server type: Subversion
    Server: svn.code.sf.net/p/q11/code/trunk/ (siehe unten)
    Path: (leer lassen, siehe unten)
    Protocol: https

    Man könnte die Angaben, die in der Server-Zeile stehen, auch zum Teil in die Path-Zeile stecken, das ist BlueJ egal. Der Name meines Projekts bei Sourceforge ist “q11”, was davor steht. Eigentlich verwaltet Subversion alle Informationen im Verzeichnis “code”, darunter auch abweichende Code-Varianten, die man mal probeweise parallel neben der Hauptversion laufen lässt. Die verschiedenen Abzweigungen lassen sich später wieder zusammenfügen, aber das geht über die Möglichkeiten von BlueJ hinaus. Die Hauptversion ist immer im Unterordner “trunk”, und nachdem BlueJ nur mit dieser Version arbeitet, gebe ich immer den Pfad bis zum trunk-Verzeichnis an. Und *darin* sind dann zum Beispiel die Projekte für Schüler. Unter der Adresse oben sind im Moment nur zwei Projekte gespeichert, ein leeres Testprojekt und ein Tic-Tac-Toe mit Schülern, in nicht ganz abgeschlossenem Zustand.

    Im Herbst co-leite ich einen Workshop zum Thema, danach werde ich die Erfahrungen dazu auch hier veröffentlichen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.