Nachdem ich heute Redmine aktualisiert, den Eclipse Redmine-Mylyn-Connector neu eingerichtet und auch das Redmine ‘Backlogs’ Plugin aktualisiert habe, möche ich an dieser Stelle einen kurzen Erfahrungsbericht liefern.
Zwar setzte ich nicht direkt Scrum als Entwicklungsprozess ein (dazu ist die Anzahl der beteiligten Personen zu gering), jedoch verwende ich einige der in Scrum enthaltenen Methoden. Ein wichtiger Grundpfeiler sind dabei das Product Backlog, sowie die Sprints. Das Product Backlog ist vereinfacht gesagt eine Liste mit gewünschten Features, welche meist nach Priorität sortiert sind. Ein Sprint ist ein kurzer Entwicklungszyklus, welcher üblicherweise zwischen zwei und vier Wochen dauert.
Mit dem Redmine Plugin ‘Backlogs’ lässt sich Redmine um verschiedene Scrum Funktionalitäten erweitern. Die Sprints werden dabei Redmine intern als Versionen angelegt, das Backlog enthält alle Stories eines Projektes (welcher Tracker als Story angesehen wird, ist konfigurierbar). Insbesondere für verteilte Teams oder auch Teams bei denen einige Mitarbeiter im Home-Office arbeiten ist das Backlogs-Plugin für Redmine ein geeignetes Tool zur anwendung verschiedener Scrum-Prozesse.
Scrum mit Redmine
Zentraler Angelpunkt zur Organisation der Scrum-Abläufe ist die ‘Backends’ Ansicht in Redmine (welche durch das Backends-Plugin hinzugefügt wurde). Hier kann man neue Stories und Sprints anlegen. Stories lassen sich einfach per Drag & Drop verschieben und so priorisieren. Auch das Zuweisen von Stories zu Sprints geschieht einfach per Drag & Drop.
Um nun einen Sprint zu bearbeiten gibt es das ‘Task board’. Dieses ist einem realen Taks Board sehr ähnlich. In dieser Ansicht wird für jede Story eine Zeile angelegt. Horizontal folgen dann aufeinander die einzelnen Bearbeitunsschritte wie ‘new’, ‘accepted’, ‘on hold’, ‘closed’ oder ‘rejected’. Welche Bearbeitungsschritte hier genau zur Verfügung stehen lässt sich über die ‘Issue statuses’ von Redmine konfigurieren. Legt man nun einen Task für eine Story mittels Klick auf das Plus-Symbol an, erscheint eine virtuelle Karte in der Spalte ‘new’ (in der Farbe des Users, welchem der Task zugewiesen wurde). Im Verlauf eines Sprints werden dann die einzelnen Tasks per Drag & Drop einfach in der jeweiligen Zeile weiter nach rechts verschoben, bis sie idealerweise schließlich den Status ‘closed’ erreicht haben.
Zu guter Letzt darf natürlich auch der Burndown Chart nicht fehlen. Hier kann man das Plugin je nach Vorliebe so konfigurieren, dass er dem Namen entsprechend nur noch den verbleibenden Aufwand anzeigt und somit nach rechts kleiner wird, oder aber die bereits abgearbeiteten Tasks anzeigt und nach rechts hin größer wird.
Redmine und Eclipse – Scrum im Einsatz
Wie arbeitet man nun praktisch mit Scrum unter Redmine und Eclipse? Eclipse Mylyn selbst bietet erst einmal keine Werkzeuge zum Arbeiten mit Scrum an. Allerdings ist dies auch gar nicht notwendig.
Als erstes benötigen wir den Redmine-Mylyn Connector. Dieser muss zum einen als Redmine Plugin installiert werden, andererseits aber auch in Eclipse. Am einfachsten geschieht dann die Verbindung zwischen Redmine und Mylyn mittels API Key Authentifizierung. Eine erste Query ist schnell angelegt, und man kann schnell alle Tasks aus Redmine auch in Eclipse sehen.
Allerdings ist dies nicht sehr zufriedenstellend. Zum Einen ist die Idee hinter Mylyn das Task Focused Programming – alle Tickets zu sehen ist also eher kontraproduktiv. Zum Anderen weiß Mylyn auch nichts von dem von uns angewandten Scrum-Prozess. Die Lösung liegt in einer durchdachten Aufteilung der Zuständigkeiten zwischen Eclipse Mylyn und dem Backlog-Modul in Redmine
Das Backlog Modul wird für alle Scrum spezifischen Aufgaben verwendet: planen von Sprints, Backlog Verwaltung, etc. – Mylyn wird dagegen nur verwendet um die Tasks des aktuellen Sprints abzuarbeiten. Konkret sieht der Prozess dann folgendermaßen aus: Zu Beginn eines Sprints wird der Sprint mittels des Backlog-Plugins in Redmine geplant und die benötigten Tasks angelegt. Anschließend legt jeder Entwickler in Eclipse eine neue Redmine Query für den soeben geplanten Sprint an: hierzu wählt man in der Query bei ‘fixed_verion_id’ einfach den gewünschten Sprint aus. Nun kann man sich im Laufe des Sprints auf die relevanten Aufgaben konzentrieren.
Sicherlich ist es mittels der Queries in Mylyn auch möglich sich beispielsweise das gesamte Backlog anzeigen zu lassen oder auch Sprints darüber zu planen. Jedoch denke ich, dass dies mittels der in Mylyn zur Verfügung stehenden Mittel nur recht umständlich möglich ist, und daher eher vom Ziel ablenkt, als dass es hilfreich ist. Eine klare Unterteilung der Zuständigkeiten der beiden Programme in Planung (Redmine Backlogs) und Ausführung (Eclipse Mylyn) halte ich daher für äußerst sinnvoll.