Taskjuggler beherrscht die wichtigsten Features für professionelles Projektmanagement. Wir erklären Planungsmethoden und zeigen, wie Sie die Projekt-Software bedienen – auch für einfache Bauvorhaben.
Wer nicht über ein perfektes Gedächtnis verfügt, verliert bei komplexen Aufgaben leicht den Überblick. Anstehende Aufgaben aufzuschreiben, ist ein erster Schritt. Passende Software kann beim Planen von Projekten aber noch mehr helfen und viel Arbeit abnehmen. Anhand eines einfachen Beispiels erklärt dieser Artikel den Einsatz des Projektplanungs-Tools Taskjuggler [1].
Stellen Sie sich vor, Sie würden Ihrem Badezimmer die lange verdiente Renovierung zukommen lassen wollen. Damit der geplante Umbau nicht im völligen Chaos endet, setzt er etwas Planung voraus. Als Bauherr dieses Projektes – also eines Vorhabens mit einem definierten Anfangs- und Endzeitpunkt – interessiert Sie natürlich genau, welche Aktionen wann geschehen, welche Handwerker wann zu beauftragen sind und selbstverständlich: Wann können Sie im neuen Bad zum ersten Mal in die Wanne steigen. Als Projektplanungstool kommt Taskjuggler [1] von Chris Schläger und Klaas Freitag zum Einsatz. Die Software ist Open Source und unterliegt der GNU-GPL-Lizenz.
Der Plan
In der Projektplanung hat sich vor vielen Jahren der Gantt-Plan durchgesetzt – benannt nach seinem Erfinder, dem amerikanischen Maschinenbauingenieur Henry Laurence Gantt (1861 bis 1919). Der Plan stellt Vorgänge mit definierten Anfangs- und Endzeitpunkten grafisch als Zeitbalken dar. Abhängigkeiten zwischen den Vorgängen zeigt dieser Diagrammtyp ebenfalls an. Den so genannten kritischen Pfad hebt er hervor. Damit ist der Vorgang gemeint, der über Zeiteinhaltung oder Terminverschiebung entscheidet.
Der Gantt-Plan liefert eine grafische Übersicht, mit der ein Planer jederzeit den Projektverlauf, den Status und eventuelle Abweichungen von der Planung erkennen kann. Die Übersicht verdeutlicht Zusammenhänge zwischen den einzelnen Arbeitsschritten. Damit wird es einfacher, einzelne Prozesse zu parallelisieren, also gleichzeitig starten zu lassen (Anfangs-Anfangs-Bedingung). Entsprechend ist es ebenfalls möglich, einen Prozess so zu planen, dass er zusammen mit einem abhängigen Prozess abgeschlossen ist (Ende-Ende-Bedingung). Diese Parallelisierung hat den Vorteil, die Dauer des geplanten Vorhabens zu verkürzen, wenn mehrere Prozesse parallel ablaufen können. Aber auch um Arbeitsmittel – in der Projektplanung auch als Ressourcen bezeichnet – besser zu verteilen. Als Ressourcen gelten bei der Badrenovierung zum Beispiel Handwerker, Maschinen und vielleicht auch Raumkapazitäten. Gelingt es Ihnen in der Planung, die Ressourcen auf die einzelnen Arbeitsschritte aufzuteilen, können Sie genau erkennen, wann Sie zum Beispiel welchen Handwerker beauftragen müssen. Wichtige Zwischenschritte bis zum Projektabschluss stellt der Gantt-Plan als Meilensteine dar: Zeitpunkte, zu denen bestimmte Aufgaben abgeschlossen sein müssen. Als Nächstes sollten Sie überlegen, welche Arbeiten für Ihre Badrenovierung nötig sind. Diese schreiben Sie zunächst als Notiz zusammen, siehe Kasten “Teilaufgaben grob”.
Teilaufgaben grob
Vorgänge zur Badrenovierung: 1. Bereitstellen Ersatzbad 2. Abbau altes Bad 3. Aufbau neues Bad 4. Bezug neues Bad und Ende des Projekts
Anschließend gehen Sie für jeden Einzelvorgang ins Detail und unterteilen ihn in weitere Vorgänge, siehe Kasten “Teilaufgaben fein”.
Teilaufgaben fein
Bereitstellen Ersatzbad 1. Prüfen der Wasseranschlüsse 2. Prüfen Heizung 3. Reparaturen 4. Säubern Ersatzbad Abbau altes Bad 1. Abstellen Wasser und Heizung 2. Abbau Möbel 3. Abbau Badewanne 4. Abbau Dusche 5. Abbau Keramik 6. Abbau Decke usw.
Bewusst wird an dieser Stelle noch keine Gedanke daran verschwendet, in welcher zeitlichen Abfolge die einzelnen Vorgänge ablaufen müssen. Sie untergliedern lediglich die Hauptvorgänge in Einzelschritte. Diese Untergliederung kann natürlich mehr oder weniger detailliert erfolgen. Eine Einteilung wie die vorliegende sollte jedoch im Allgemeinen ausreichend sein.
Im letzten Schritt Ihrer Planungsvorbereitung machen Sie sich schließlich Gedanken darüber, wer welche Vorgänge übernehmen kann. Im vorliegenden Beispiel ist vorgesehen, dass Sie selbst die Aufräumarbeiten übernehmen. Die Lieferung des Materials erfolgt über einen Baustoffmarkt, Sie haben zwei Handwerker zur Auswahl, Meister Müller für alle Installationen und Abbauten und Meister Strom für die Elektroarbeiten. Schließlich noch die eigene Gemeinde um den Bauschutt abzuholen. Die Zuordnung der Personen auf die einzelnen Vorgänge als auch die zeitliche Anordnung der Vorgänge nehmen Sie mit einem geeigneten grafischen Planungstool vor.
Das Tool
Das Projektplanungswerkzeug Taskjuggler ist eigentlich eine Sammlung von Bibliotheken und Kommandozeilen-Tools, es gibt aber auch ein auf KDE basierendes GUI-Frontend. Taskjuggler plant selbständig unabhängige Aufgaben und löst Konflikte auf, zum Beispiel wenn ein Zusammenhang zwischen dem Ende einer Aufgabe und dem Beginn einer neuen Aufgabe besteht. Beim Festlegen von Arbeits- und Freizeit verfährt Taskjuggler flexibel und stellt auch arbeitsfreie Zeiten im Gantt-Diagramm dar. Ressourcen lassen sich für die Verwaltung zu Gruppen ordnen – eine Eigenschaft, die bei der Badrenovierung nicht zum Einsatz kommt.
Taskjuggler erlaubt, einzelnen Ressourcen Kosten zuzuordnen und Initialkosten und Endkosten für ein Projekt zu erfassen. Damit lässt sich auch das Budget für die Badrenovierung kontrollieren und – sollte das Projekt länger dauern – auch der Geldfluss über die Zeit hinweg bestimmen. Die Software bietet umfassende Reports, zum Beispiel nach einzelnen Aufgaben, Fortschritt oder Kosten geordnet. Das Gantt-Diagramm spiegelt die Fortschrittsplanung wieder und zeigt die Zuordnung von Ressourcen zu einzelnen Tasks. Taskjuggler liefert eine Übersicht über die Personalplanung mit Verfügbarkeit, Auslastung und Kostenfaktor. Der Ressourcenkalender zeigt, welche Ressourcen zu welchem Zeitpunkt in welchem Umfang verfügbar sind. Taskjuggler ist ein sehr mächtiges und leistungsfähiges Tool für den professionellen Einsatz. Alle Komponenten des Zeit-, Ressourcen- und Kostenmanagements sind vorhanden, die Daten lassen sich leicht eingeben und verwalten. Abgerundet wird das Werkzeug durch die Reporting-Funktionen, die sehr übersichtlich den aktuellen Projektstatus mit den Parametern Zeit, Kosten und Ressourceneinsatz darstellen.
Installation
Der Source-Code von Taskjuggler findet sich im Download-Bereich der Website [1]. Zum Übersetzen setzt das Programm die KDE-Entwicklungsbibliotheken voraus (kdelibs-dev, kdelibs-devel oder ähnlich). Das Paket ist mit bzip2 komprimiert, also verwenden Sie beim Entpacken den Tar-Schalter -j:
tar xfj taskjuggler-2.1.tar.bz2
Wechseln Sie in das Verzeichnis taskjuggler-2.1 und konfigurieren Sie die Taskjuggler-Sourcen ./configure Übersetzung und Installation erledigen anschließend die Befehle make und su -c 'make install'.
Planen
Im nächsten Schritt geben Sie die einzelnen Aufgaben in Taskjuggler ein. Zur Eingabe benutzt das Programm einen eigenen Editor, Abbildung 1.
Bei der Anlage eines neuen Projektes legen Sie also im Editor zuerst die Projektdaten mit folgenden Eigenschaften an: ProjektID (Eine Beschreibung des Projekts unter der Angabe des Zeitraums in dem das Vorhaben läuft), aktuelles Datum, Zeitformat und Währung. Die Eingaben sehen für das Beispiel Badrenovierung zum Beispiel so aus:
project bare "Badrenovierung" "1.0"?
2005-07-01 2005-08-30 {
now 2005-07-11
timeformat "%Y-%m-%d"
currency "EUR"
scenario plan "Plan" {
scenario delayed
"Delayed"
}
}
Die Kosten
Ein großer Pluspunkt von Taskjuggler ist seine Fähigkeit, Kosten zu erfassen und zu kalkulieren. Somit haben Sie auch bei der Badrenovierung stets die Kontrolle über das Budget und können das gesamte Vorhaben auch immer wieder neu berechnen lassen. Für die Kalkulation erfolgen im weiteren Schritt die Eingaben für den Kostenfaktor durch Eingabe von rate 120.0
Diese Eingabe setzt den Tagessatz für den teuersten Mitarbeiter im Projekt fest. Die Aufteilung der Kostenfaktoren erfolgt in Taskjuggler elegant über Makros, die später innerhalb der einzelnen Teilaufgaben einfach zugewiesen werden können. Sie ersparen sich somit unnötige Schreibarbeit bei der Dateneingabe, außerdem fallen so die Projektdaten übersichtlicher aus.
Das Makro für das vorliegende Projekt sieht zum Beispiel so aus:
macro allocate_workers [
allocate ma1
allocate ma2 { load 0.5 }
allocate ma3
]
Die Mitarbeiter ma1 bis ma3 werden also in einem Makro zusammengefasst. Die Eingabe load 0.5 bewirkt, dass für den Platzhalter ma2 ein nur halb so großer Tagessatz (Faktor 0,5) angesetzt wird. In den Teilaufgaben weisen Sie dieses Makro dann mit der Eingabe ${allocate_workers} zu. Im nächsten Schritt definieren Sie schließlich Projektressourcen:
flags team
resource ma "Mitarbeiter" {
resource ma1 "Müller"
resource ma2 "ich"
resource ma3 "Strom"
flags team
}
Sie fassen damit die Mitarbeiter zu einem Team zusammen. Außerdem stellen Sie an dieser Stelle die Verbindung zwischen den Platzhaltern ma1 bis ma3 zu den einzelnen Personen her. Sollten weitere Details zu einzelnen Mitarbeitern aufgenommen werden, geben Sie diese Daten einfach in der Zeile der betreffenden Person ein. Zum Beispiel ist Herr Strom in der Zeit vom 1.8.05 bis 10.8.05 nicht verfügbar.
resource ma3 "Strom" { vacation?
2005-08-01 - 2005-08-10 }
Wenn Ihr Handwerker Herr Müller den Auftrag nochmal durchkalkuliert hat und Ihnen einen höheren Tagessatz berechnet, geben Sie seinen individuellen Tagessatz ebenfalls an:
resource ma1 "Mueller" ?
{ rate 100.0 }
Nach diesen Vorbereitungen kommen Sie nun endlich dazu, die einzelnen Aufgaben einzugeben und zu planen:
task Bare "Bad Renovierung" {
task ersbad "Ersatzbad"
task altbad "Abbau altes Bad"
task neubad "Aufbau neues Bad"
task fini "Abschluss"
}
In der Editorsprache von Taskjuggler definieren Sie eine Aufgabe mit dem Schlüsselwort task. Jede Aufgabe besteht aus einem Identifier, zum Beispiel Bare, und einer Beschreibung wie “Badrenovierung”. Unteraufgaben oder Detailangaben zu einer Aufgabe setzen Sie einfach in Klammern. Entsprechend der anfänglichen Einteilung des Renovierungsprojekts in die vier Unteraufgaben weisen Sie auch in Taskjuggler der Hauptaufgabe “Badrenovierung” die Unteraufgaben “Ersatzbad”, “Abbau altes Bad”, “Aufbau neues Bad” und “Abschluß” zu.
Entsprechend unterteilen Sie auch die Unteraufgaben noch einmal, zum Beispiel die Aufgabe “Ersatzbad” in die Tasks in Listing 1.
Listing 1
Teilaufgaben im Taskjuggler-Editor
task Bare "Badrenovierung" {
task ersbad "Ersatzbad" {
task chkwas "Pruefen Wasseranschluss"
task chkhzg "Pruefen Heizung"
task rep "Reparaturen"
task cln "Saeubern"
}
task altbad "Abbau altes Bad"
task neubad "Aufbau neues Bad"
task fini "Abschluss"
}
Genauso verfahren Sie mit allen weiteren Teilaufgaben. Für die vollständige Planung – schließlich möchten Sie ja wissen wann das neue Bad fertig ist, wann welche Handwerker arbeiten sollen und wieviel Geld das Ganze kostet – fehlen noch ein paar Angaben: Wie lange dauert die einzelne Aufgabe? Wer führt sie aus? Wie ist der zeitliche Ablauf?
Der Termin
Beginnen Sie mit dem ersten Teil “Wie lange dauert die Aufgabe?”. Taskjuggler hält dafür in seinem Editor einige Schlüsselwörter bereit: So legt effort den Aufwand in Manntagen fest, gefolgt von der Zuordnung eines oder mehrerer Mitarbeiter (Ressourcen) zu dieser Aufgabe. Der Schlüssel length bestimmt die Dauer in Arbeitstagen, duration in Kalendertagen.
Sie holen sich also jetzt die entsprechenden Angaben von den Handwerkern ein und schätzen den eigenen Aufwand ab. Im Beispiel der Aufgabe “Ersatzbad” können die Eingaben so aussehen wie in Listing 2.
Listing 2
Teilaufgaben weiter unterteilt
task ersbad "Ersatzbad" {
task chkwas "Pruefen Wasseranschluss" {
effort 1d
allocate ma2
}
task chkhzg "Pruefen Heizung" {
effort 1d
allocate ma2
}
task rep "Reparaturen" {
effort 2d
allocate ma1, ma3
}
task cln "Saeubern" {
effort 1d
allocate ma2
}
}
Sie erinnern sich an die Zuordnung von Mitarbeitern und Identifiern? Der Name ma1 entspricht dem Installateur Müller, ma2 sind Sie selbst, ma3 ist der Elektriker Strom. Die Aufgabe “Prüfen Wasseranschluss”, die sie selbst vornehmen, nimmt einen Tag in Anspruch. Gleiches gilt für die Aufgabe “Prüfen Heizung”. Die Reparaturen, die der Installateur und der Elektriker durchführen, setzen Sie mit je zwei Tagen an, Den Abschluss, das Reinigen des Ersatzbades, übernehmen Sie wieder Sie selbst und planen dafür einen Tag ein. Entsprechend füllen Sie die restlichen Aufgaben aus.
Das Schlüsselwort depends legt die zeitliche Reihenfolge der Arbeiten fest und bestimmt die Abhängigkeiten zwischen mehreren Vorgängen. Da Taskjuggler den zeitlichen Ablauf errechnen soll, arbeiten Sie mit relativen Zeitangaben der Art: “Aufgabe 2 kann starten wenn Aufgabe 1 abgeschlossen ist.” Das Beispiel “Bereitstellen Ersatzbad” verdeutlicht das Prinzip. Die zeitliche Reihenfolge ist: Die Aufgabe “Prüfen Wasseranschluss” legt den Beginn des Projektes fest. Danach kann die Aufgabe “Prüfen Heizung” beginnen. Die Reparaturen können starten, wenn beide Vorgänger “Prüfen Wasseranaschluss” und “Prüfen Heizung” abgeschlossen sind. Das Säubern kann erfolgen, wenn die Reparaturen abgeschlossen sind. Übersetzt für den Editor von Taskjuggler sieht dies aus wie in Listing 3.
Listing 3
Zeitliche Abhängigkeiten festlegen
task ersbad "Ersatzbad" {
task chkwas "Pruefen Wasseranschluss" {
effort 1d
allocate ma2
depends Bare.start
}
task chkhzg "Pruefen Heizung" {
effort 1d
allocate ma2
depends !chkwas
}
task rep "Reparaturen" {
effort 2d
allocate ma1, ma3
depends !chkwas, !chkhzg
}
task cln "Saeubern" {
effort 1d
allocate ma2
depends !rep
}
}
Bare.start ist der Starttermin des Projekts Badrenovierung. Sein Parameter .start wurde in Taskjuggler automatisch erzeugt. Die restlichen Eingaben beschreiben relative Zeitpunkte die Taskjuggler selbst umrechnet. Zum Beispiel ist !chkwas ist der Endzeitpunkt der Aufgabe “Prüfen Wasseranschluss”. In der Nomenklatur von Taskjuggler steht ein Ausrufezeichen für einen relativen Zeitpunkt innerhalb einer übergeordneten Aufgabe – also hier dem Hauptpunkt “Ersatzbad”, zwei Ausrufezeichen für einen relativen Zeitpunkt innerhalb des Gesamtprojekts, also einer Hauptaufgabe. Dementsprechend geben Sie die zeitlichen Abhängigkeiten für alle Teil- und Hauptaufgaben ein.
Die Eingaben schließen Sie mit der Taste F9 ab. Taskjuggler prüft daraufhin die eingegebenen Daten auf korrekte Syntax und berechnet anschließend das Projekt. Sie sehen dann in der grafischen Darstellung des Gantt-Plans, wie sich die Einzelaufgaben zueinander verhalten, wann Aufgaben starten und enden und wann das Gesamtvorhaben abgeschlossen ist (Abbildung 2).
Mit den Reportfunktionen von Taskjuggler rechnen Sie sich die anfallenden Kosten aus – Sie erinnern sich, dass Sie den einzelnen Aufgaben Mitarbeiter (Ressourcen) zugewiesen haben und dass diese Ressourcen auch über Kostenfaktoren verfügen. Anhand dieser Angaben erstellt Taskjuggler dann auch den entsprechenden Report oder – wie im Abbildung 3 – die Auslastung der Ressourcen im Projekt.
Das Problem
Nun bringt die schönste Planung nichts, wenn man diese nicht jederzeit der aktuellen Situation angepassen kann. Ein Beispiel für Veränderungen in der Projektlaufzeit sind zum Beispiel vorher nicht absehbare Ressourcenengpässe. Zum Beispiel fällt Ihr Elektriker Strom gerade dann wegen Krankheit aus, wenn er auf der Baustelle erscheinen sollte. Oder eine Aufgabe wird in wesentlich kürzerer Zeit abgeschlossen als geplant. Zum Beispiel stellen Sie bei der Überprüfung von Heizung und Wasseranschluss im Ersatzbad fest, dass alles in Ordnung ist und sie sich die beiden Reparaturtage einsparen können.
Um den Projektplan an aktuellen Gegebenheiten anzupassen, benutzen Sie wieder den Editor von Taskjuggler. Für den Krankheitsfall des Elektrikers verändern Sie die Zeitparameter. Für wegfallende Reparaturen streichen Sie einfach die zugehörige Aufgabe. Sie geben also einfach alle Veränderungen der Parameter Ressourcen, Zeit und Kosten im Editor ein und lassen Taskjuggler neu berechnen. Da Sie wie zuvor beschrieben stets mit relativen Zeitangaben gearbeitet haben, errechnet Taskjuggler einen neuen Projektplan. Lediglich im Fall, in dem Aufgaben gelöscht werden, müssen Sie entsprechende manuelle Korrekturen im Editor vornehmen, wenn Aufgaben auf die gelöschte Aufgabe referenzieren.
Das Fazit
Der leicht erlernbaren Editor von Taskjuggler lässt Sie ein Projekt in allen seinen Bestandteilen beschreiben. Taskjuggler bringt die Eingaben anschließend in eine übersichtliche grafische Darstellung des Gantt-Plans, zudem stehen eine Vielzahl von Berichten hinsichtlich Kosten und Ressourcenplanung zur Verfügung. Bereits das kleine Beispiel der Badrenovierung enthält alle wesentlichen Planungselemente und illustriert damit die Funktionsfähigkeit von Taskjuggler auch für größere Projekte.
Infos
[1] Taskjuggler: http://www.taskjuggler.org







