MSP-Projektwoche 2010 - Trac/SVN/Agilo

Aus THM-Wiki
Wechseln zu: Navigation, Suche
Dokumentation
Arbeitstitel MSP-Projektwoche 2010 - Trac/SVN/Agilo
Kurs Methoden des Software-Entwicklungsprozesses
Semester WS 09/10
Teilnehmer Julian Hochstetter (Projektleiter), Dennis Priefer (stellv. Projektleiter), Alexander Ahrendt, Christian Peter, Nils Asmussen, Markus Baier
Programmiersprache PHP

Inhaltsverzeichnis

Diese Seite dient der Dokumentation der Projektgruppe "Trac/SVN/Agilo" in der Projektwoche der Master-Veranstaltung "Methoden des Softwareentwicklungsprozesses (MSP)" im Wintersemester 2009/2010.

Mitglieder der Gruppe sind:

  • Julian Hochstetter (Projektleiter)
  • Dennis Priefer (stellv. Projektleiter)
  • Alexander Ahrendt
  • Christian Peter
  • Nils Asmussen
  • Markus Baier

Der Arbeitsraum der Gruppe befindet sich im Raum F116.

Organisatorisches

Die Organisation der Gruppe erfolgt über Agilo for Scrum. Erfahrungen mit diesem System sollen am Ende der Projektwoche dokumentiert werden.

Links

1. Tag (04.01.2010) Pair Programming

Bearbeiten von Feature- und Bug-Tickets

  • "Die Anzahl der dargestellten Spiele in der Grafik muss begrenzt werden, da die Darstellung sonst unübersichtlich wird": MSP-Projektwoche-AAh-CPe
    • Christian Peter
    • Alexander Ahrendt

2. Tag (05.01.2010) Online-Planning Poker: Play. Estimate.Plan

ToDo

  • Anmeldung zum Planning Poker
  • Teamleitung wählen
  • ZendStudio + ZendServer (5.3)
  • Wiki-Kategorien: Team-Wikiseiten anlegen
  • XPWeb-Projekt anlegen + pflegen
  • 10-15 User Stories in XPWeb definieren

3. Tag (06.01.2010) Iteration Planning

ToDo

  • Projekt in Agilo anlegen und pflegen
    • Einpflegen der User Stories
  • 10:00-12:00 Uhr: Tasks definieren
  • 13:00-16:00 Uhr: Pair-Programming
  • 15:00-16:00 Uhr: Standup-Meeting

4. Tag (07.01.2010) On-site Customer / Kunde vor Ort - Agile Planning & Reporting

ToDo

  • 11:00 Uhr: Planung überarbeiten
  • 14:00-16:00 Uhr: Crisis Meeting

5. Tag (08.01.2010) Collective Code Ownership/Retrospektiven

ToDo

  • 11:00 Uhr:Standup-Meeting (F112a Reihenfolge wie gehabt)
  • 15:00 Uhr:Abschluss-Präsentation + Retrospektive

External-Tools: Reverse Engineering

Aufgrund fehlender Dokumentation im Wiki, musste zunächst die Funktionsweise des Moduls External Tools analyisiert werden

Klassendiagramm

DB-Schema

Dbschema et.png

  • et_signuprequest
  • et_tooldata
    • Enthält Daten zu einem eingebundenen Tool
  • et_tools
    • Enthält die eingebundenen Tools. Verknüpfung zwischen Tool und Kurs.
  • et_userlogindata
    • Tabelle enthält Daten für das Tool-Passwort

User Stories

Das webbasierte Projektmanagement-Tool Trac, soll als externes Tool in eStudy eingebunden werden. Zuknüftig soll es möglich sein, dass bei Erstellung eines neuen Kurses, automatisiert ein Projekt in Trac und ein SVN-Repository erstellt wird. Bei Kursanmeldung eines Users in einem Kurs, sollen ihm die richtigen Benutzerrechte in Trac und auf dem SVN-Repository übertragen werden. Bei Abmeldung eines Users aus einem Kurs, werden ihm diese Benutzerrechte wieder entzogen.

Das Trac-System soll um folgende Plugins erweitert werden:

User Story 1: Trac und Svn als externes Tool in eStudy einbinden

eStudy-Modul External Tools

Das Trac-Tool kann nun als Externes Tool in einem Kurs eingebunden werden. Dazu geht man unter "Administration->Tools-Verwalten->Neues Werkzeug anlegen". Nachfolgend erscheint folgendes Formular:

External tools trac1.png

Nach Bestätigung des Formulars erscheint ein weiteres Formular.

External tools trac2.png

Hier können weitere Einstellungen zu dem Trac-Tool getätigt werden. So können z.B einige Trac-Plugins ausgewählt werden, die in der Trac-Instanz des Kurses installiert werden sollen. Des Weiteren kann hier ausgewählt werden, welche Benutzergruppen über Trac-Admin-Rechte in Trac verfügen sollen. Das Formular dient derzeit noch als Platzhalter, die Funktionalität ist noch nicht implementiert.

Neue Ereignisse im Modul External Tools

Um nicht für das externe Tool Trac einen Spezialfall einzuführen, haben wir Ereignisse hinzugefügt, auf die alle Tools reagieren können. Diese sind in die Klasse ToolInfo als Dummy-Implementierungen integriert und können bei Bedarf von den abgeleiteten Klassen überschrieben werden. Folgende Ereignisse stehen zur Verfügung:

  • addToCourse($courseID) - Wird aufgerufen sobald ein Tool zu dem Kurs mit gegebener ID hinzugefügt wird
  • deleteFromCourse($courseID) - Wird aufgerufen sobald ein Tool von dem Kurs mit gegebener ID entfernt wird
  • adjustToolUrl(&$url) - Wird aufgerufen sobald ein externes Tool per IFrame oder extern angezeigt wird

Die ersten beiden Ereignisse nutzt das externe Tool Trac um Trac und SVN serverseitig anzulegen bzw. zu löschen. Das dritte Ereignis wird verwendet um die URL für Trac automatisch zu generieren. Da Trac selbst auf dem Server nur einmal existiert und jeder Kurs lediglich eine eigene Trac-Umgebung erhält, ist der Beginn der URL für jeden Kurs gleich. Am Ende der URL befindet sich der für diese Trac-Umgebung gewählte Name. Um dem Benutzer die manuelle Wahl dieses Namens zu ersparen, wird die URL automatisch generiert.

Ausgelöst werden die ersten beiden Ereignisse in der Klasse ToolEdit und das dritte in der Klasse ExternalTool.

TracInfo

Die Klasse TracInfo leitet von der Klasse ToolInfo ab und implementiert die Methoden zur Anlegung bzw. Entfernung von Benutzern in/von der Trac-Datenbank. Desweiteren wird auf die Ereignisse addToCourse und deleteFromCourse mit dem Aufruf des serverseitigen Scripts reagiert. Die Methode adjustToolUrl() wird genutzt um die URL zu Trac automatisch zu generieren:

public function adjustToolUrl(&$url) {
	$project = $this->getProjectName($_SESSION['course']);
	$url = 'https://trac.mni.fh-giessen.de/trac/'.$project;
}

Tracinfo classdiagram.png

TracCtrl

Um das auf dem SVN- und Trac-Server liegende Script zur Anlegung bzw. Löschung von SVN-Repositories und Trac-Environments aufrufen zu können, haben wir die Klasse TracCtrl entworfen. Diese führt einen POST-Request an das Script via CURL durch:

public function performPost($vars) {
	$ch = curl_init();
	curl_setopt($ch,CURLOPT_URL,$this->url);
	curl_setopt($ch,CURLOPT_HEADER,0);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,$this->verifySSLPeer);
	curl_setopt($ch,CURLOPT_POST,true);
	curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
	$res = curl_exec($ch);
	if($res === false)
		$this->error = curl_error($ch);
	else
		$this->error = $res;
	curl_close($ch);
	return $res === '';
}

Verwendet wird die Klasse in TracInfo beispielsweise folgendermaßen:

$tracctrl = new TracCtrl(self::CTRL_URL,false);
$res = $tracctrl->performPost(
	array(
		'cmd' => 'create',
		'project' => $project,
		'dbhost' => $dbData['dbUrl'],
		'dbname' => $project,
		'dbuser' => $dbData['dbUser'],
		'dbpw' => $dbData['dbPassword']
	)
);
if(!$res)
	Output::errorMessage($tracctrl->getError(), 1, false, true);
return $res;

Automated Trac and Subversion Setup

Das Trac Enviromnent und das SVN Repository werden über ein Script auf dem Trac Server automatisch erstellt. Administratoren, Dozenten und die Administratoren in eCommunities können über die Externen Werkzeuge in eStudy solch ein Trac und SVN erstellen lassen. Jedes Projekt erhält ein eigenes Trac und ein eigenes SVN Repository. Das hat den Vorteil, dass jedes Projekt im Trac

  • Eigene Tickets
  • Eigene Meilensteine
  • Eigene Mitlgiederverwaltung
  • Eignener Codebrowser

hat und dies nicht mit anderen Projekten teilen muss.


Der Projektname setzt sich aus dem Kurznamen des Kurses und dem Semester zusammen, z.B. MSP_WS09

Das serverseitige Script ist im Apache folgendermaßen konfiguriert. Dass nicht unerlaubte Zugriffe stattfinden, werden nur die Anfragen der eStudy Server erlaubt.

NameVirtualHost trac.mni.fh-giessen.de:443
<VirtualHost trac.mni.fh-giessen.de:443>
   ## script zum remote call zum anlegen von svn und trac
   Alias /automated_trac_and_svn /home/trac/automated_trac_and_svn.php
   <Location /automated_trac_and_svn>
     Order Deny,Allow
     Deny from all
     Allow from estudy.fh-giessen-friedberg.de
     Allow from 10.197.5.20  # estudy-01
     Allow from 10.197.5.21  # estudy-02
     Allow from 10.197.5.22  # estudy-03
     Allow from 10.197.5.9   # estudy-04
   </Location>
</VirtualHost>


Subversion Repository

Das Subversion Repository wird über das Script initial erstellt. Es exitieren jedoch keine Daten im Repository.

Der Dozent oder die Studenten müssen die Verzeichnisstruktur im Repository selbst, z.b. durch einen intialen Commit erstellen:

# man gehe in ein leeres verzeichnis
# elementare verzeichnisstruktur anlegen
mkdir trunk branches tags
svn import . https://svn.mni.fh-giessen.de/repositories/<repo_name> --message 'Initial repository layout'

So kann das Repoitory nicht nur für Programmierprojekte, sondern z.B. auch für Dokumentenarchivierung benutzt werden.

Authentifizierung

Das Subversion Repository wird über [WebDav] bereit gestellt. Der Apache2 Webserver serviert die SVN Daten direkt über den Browser und über HTTP Post können Daten in das SVN Repository übertragen werden.

Die Authentifizierung beim schreibenden Zugriff auf das SVN Repository soll auch über die Benutzerdaten, die in der Trac Datenbank gespeichert sind erfolgen.

Dazu wird das Apache2 Authentifizierungsmodul external_auth verwendet, da dies die größte Freiheit in der Konfiguration zulässt. Es existieren auch weitere Datenbank Zugriffsmodule, die jedoch nur mit einer voreingestellten Datenbank arbeiten können. In unserem Fall wird jedoch eine dynamische Auswahl der Datenbank benötigt, je nach Trac bzw SVN Repository.

Dazu befragt der Apache2 Webserver ein Perl Script, ob der Benutzername und das übermittelte Passwort gültig sind. Der Benutzername, das Passwort und die Request URI wird über Umgebungsvariablen dem Perl Script übergeben, das regelt die erste Zeile in der Apache Konfiguration:

/etc/apache2/sites-enabled/003-svn:

DefineExternalAuth trac_mysql environment /usr/bin/mysql-auth.pl

<Location /repositories>
    DAV             svn
    SVNParentPath   /var/svn-repos/
    SVNListParentPath on

    AuthType          Basic
    AuthName          "Subversion Login"

    AuthBasicProvider external
    AuthExternal trac_mysql
    ErrorDocument 401 /auth_failed.html

    <LimitExcept GET PROPFIND OPTIONS REPORT>
      Require valid-user
   </LimitExcept>
</Location>

Die Zeile <LimitExcept GET PROPFIND OPTIONS REPORT></LimitExcept> bewirkt, dass nur bei schreibendem Zugriff auf das Repository, die Authentifizierung notwendig ist.

Das Perl Script mysql-auth.pl extrahiert aus der Request URL den Projektnamen und verwendet diesen, um die richtige Datenbank auszuwählen.

mysql-auth.pl:

$user = $ENV{'USER'};
$pass = $ENV{'PASS'};

$tmpProjectName = $ENV{'URI'};
$tmpProjectName =~ m/(\/repositories\/)(.*)(\/.*)$/;
$projectName = $2;

Trac Environment

Die automatisch generierten Trac Instanzen laufen über den von [Trac unterstützen] [WSGI Wrapper] [mod_wsgi] von Apache. Dies ist die schnellste Methode, Trac mit dem Apache Webserver laufen zu lassen. WSGI ist ein in C geschriebener Python Wrapper und darum enorm effizient.

/etc/apache2/sites-enabled/003-trac:

# alle weiteren Tracs aus /home/trac/environments
WSGIScriptAlias /trac /usr/share/trac/cgi-bin/trac.wsgi
<Location "/trac">
     WSGIApplicationGroup %{GLOBAL}
     SetEnv trac.env_parent_dir /home/trac/environments
     Order allow,deny
     Allow from all
</Location>


Registrierung wurde deaktiviert



Authentifizierung

Die Authentifizierung von Trac und Subversion geschieht über die External Tools Benutzerdaten aus eStudy. Diese Benutzerdaten werden über die ExternalTools Automatisierung in die Trac Datenbank übertragen. Der Benutzer kann sich dann mit seinen gewohnten Benutzerdaten im Trac sowie beim schreibenden Zugriff auf des Subversion authentifizieren.

Das [AccountManagerPlugin] im Trac erlaubt, genau diese Authentifizierung über die Datenbank von Trac. Über das serverseitige Script wird Trac mit dem AccountManagerPlugin so initialisiert, dass der AccountManager-Login statt dem Browser-Popup-Login benutzt wird.

config set components trac.web.auth.LoginModule disabled

config set components acct_mgr.web_ui.AccountManager enabled
config set components acct_mgr.web_ui.LoginModule enabled

config set components acct_mgr.db.SessionStore enabled
config set components acct_mgr.pwhash.htpasswdhashmethod enabled

config set account-manager password_store SessionStore
config set account-manager hash_method HtPasswdHashMethod

Die Anmeldung im Trac erfolgt dann über eine Benutzerfreundliche Eingabemaske:

Trac.AccountManager.Login.form.png

Löschen (Archivieren) von Projekten

Wenn ein Dozent oder Administrator den Kurs löscht, dann wird über die Automation die Archivierung des Trac und Subversion angestoßen.

Alle Daten, die für die Wiederherstellung benötigt werden, archiviert das Script über das [PEAR] Package [Archive_Tar] in das Verzeichnis /home/trac/_archive. Aus diesem Verzeichnis können die Administratoren die Daten entgültig löschen.

Das Backup umfasst

exec("mysqldump -h $dbHost -u $dbUser --password=$dbPw trac_$projectName", $dumpOutput);
$sqlDumpFile = "/tmp/mysql.dump.trac_$projectName.".date('Ymd').".sql";
$fh = fopen($sqlDumpFile, 'w') or die("can't open file for dumping db");
foreach($dumpOutput as $line) {
        fwrite($fh, $line);
}
fclose($fh);

$backupArchiveFile = "/home/trac/_archive/$projectName-".date('Ymd').".tar.bz2";
$backupArchive = new Archive_Tar($backupArchiveFile, "bz2");
$filesToBackup = array($sqlDumpFile, $tracEnvPath, $svnRepoPath);
$backupArchive->create($filesToBackup) or die("Could not create backup archive!");
$backupArchive->_Archive_Tar(); // Destructor call, for closing file _now_, so that we can now delete the files physically 

if (! mysql_query("DROP DATABASE trac_$projectName",$con)) {
        echo ("Error creating database: " . mysql_error());
}
mysql_close($con);

exec("rm -fr $tracEnvPath");
exec("rm -fr $svnRepoPath");
exec("rm ".escapeshellarg($sqlDumpFile));

User Story 2: Trac-Plugin TracSnapPlugin

Startseite Snap
Soziales Netzwerk innerhalb von Trac
Alle bearbeiteten Dateien mit Beziehungen zu anderen Dateien
Eigene bearbeiteten Dateien mit Beziehungen

Das Trac Plugin SNAP bzw SocialNetwork erweitert das Projektmanagement-Tool um die Möglichkeit, soziale Aspekte eines Projektes auf Grund der Analyse des Quellcodes aus dem Repository darzustellen. Neben den Beiträgen in Form von Commits in das Repository wertet SNAP auch die Aktivität innerhalb des Ticket Moduls aus. Kommentare oder Es bietet folgende Informationen an:

  • Welche Entwickler muss ich kontaktieren, falls ich an einem bestimmten Stück Code arbeiten will. Wer hat die meiste Erfahrung mit diesem Code gesammelt. Diese Information kann hilfreich sein, falls es sich um undokumentieren oder schwierigen Code handelt, da Entwickler die an diesem Code schon gearbeitet haben, bestimmt Erfahrungen gesammelt haben.
  • Welche Stücke Code hängen zusammen. Bei großen Projekten, wie auch eStudy eines ist, werden oft über mehrere Dateien Änderungen und dann daraus folgende Commits gemacht. Diese Commits werden von TracSNAP analysiert und zeigt so vermutlich logisch-zusammenhängende Dateien an.
  • Zeigt soziale Netze an, basierend auf Commits sowie Diskussion und Arbeit mit Feature- und Bugtickets.


Zur Erklärung
Im Kreis angeordnete Dateien: Dateien nach Verzeichnis gruppiert. Unter [My Files] werden nur die kürzlich von mir bearbeiteten Dateien angezeigt.
Eine blaue Linie: zeigt an, wie oft ein Paar von Dateien zusammen eingecheckt wurde.
Zusätzliche Informationen im Browser: Wer ist Experte der Datei oder des Verzeichnisses, welches im Trac-Browser angezeigt wird.


Anpassungen des Python Codes

Vorhandene Fehler im Code beseitigt

TracSnapPlugin/0.12/socialnetwork/socialnetwork.py

@@ -192,7 +192,7 @@
 			determine_relations(self, repo)
 
 			# Make a social recommendation
-			rec = make_recommendation_box(self, req.authname, req.basepath)
+			rec = make_recommendation_box(self, req.authname, req.base_path)
 
@@ -298,8 +298,8 @@
 			new_person = query_args.getfirst("person", None)
 			if new_person != None:
 				strength = query_args.getfirst("strength", 1)
-				self.new_social_connection(req.authname, new_person, strength)			
+				new_social_connection(self,req.authname, new_person, strength)


Starte in Verzeichnis /trunk da im Repository sehr viele Branches und Tags sind

TracSnapPlugin/0.12/socialnetwork/socialnetwork.py

 subdirs = query_args.getlist("subdirs")
+
+ if subdirs == []:
+	subdirs.append('trunk')
+

Korrektes Auslesen der eMail Adresse

TracSnapPlugin/0.12/socialnetwork/suggestedcontact.py

 - <a href="mailto:coworker @ example.com">%s@%s.com</a>
 + <a href="mailto:%s">%s</a>

- % (contact.name, contact.name, contact.name, contact.name)
+ % (contact.name, contact.email, contact.email, contact.name)

...

+ cursor.execute("SELECT value AS email FROM session_attribute WHERE sid=%s AND name='email'", suggested_contact.name);
+
+ suggested_contact.email = cursor.fetchone()[0]
+
  return suggested_contact


Leider hat das Plugin aber noch einige Fehler, die das Betreiben in der Produktion leider nicht erlauben.

Das Problem ist die enorme Ressourcenbeanspruchung, das bei jedem Aufruf des Plugins der komplette Sourcecode erneut nach sozialen Beziehungen durchsucht wird und es so sehr oft zu einem Timeout kommt oder einfach zu wenig Hauptspeicher zur Verfügung steht.

User Story 3: Trac-Plugin TracSvnHooksPlugin

Funktioniert nur bis Trac-Version 0.10 und wurde daher nicht weiter betrachtet.

User Story 4: Trac-Plugin GANTT

Gantt Diagramm der Tickets
Kalender Ansicht der Tickets

Das Trac Plugin Gantt erweitert das Projektmanagement Tool um 2 wichtige Features.

Zum einen wird eine Gantt-Ansicht der Tickets angeboten. In dieser Ansicht ist es möglich, den Verlauf von Tickets mit einer Fortschrittsanzeige zu überwachen. Es ist zudem klar ersichtlich, wie lange Tickets in Bearbeitung sind.

In einem weiteren Menüpunk im Trac wird durch dieses Plugin auch ein Kalender angeboten. Dieser zeigt in grafischer Form an, an welchen Tagen welche Tickets, Bugs und Feature-Requests erstellt wurden.

DatePicker

Für die korrekte Darstellung der Tickets im Kalender sowie in der Gantt Ansicht, ist es erforderlich, dass Tickets mit zusätzlichen Feldern versehen werden: dem Start- und Enddatum. Mit Hilfe des Plugins DateField ist es dem Benutzer nun möglich, das Start- und Enddatum in einem grafischen JQuery Kalender zu wählen:

EStudy.Trac.Gantt.DateField.jpg


User Story 5: Trac-Plugin DISCUSSION FORUM

User Story 6: Trac-Plugin DOXYGEN

Das Doxygen Trac Plugin erweitert das Projektmanagement Tool Trac um einen weiteren Menüpunkt, unter dem die aktuelle API Dokumentation zu finden ist.

Da eStudy jedoch ein PHP Projekt ist und Doxygen mit PHP nicht so gut funktioniert, wird der Pendant PhpDocPlugin eingesetzt.

User Story 7: Trac Plugin AutoCompleteUsers

Das AutoCompleteUsers Plugin für Trac, ermöglicht es dem Ticketbearbeiter in den Feldern assign to und cc, Namen mit AutoCompletion auszuwählen.

Es werden mit AJAX Requests die Benutzernamen, die vollen Namen und die eMail Adressen befragt und dem Editor in einer Dropdown Liste zur Verfügung gestellt.

Die eMail Adressen wurden aus datenschutzrechtlichen Gründen, im folgenden Screenshot entfernt.

Trac User, die keine Administoren Rechte besitzen, können zudem ebenfalls die eMail Adressen der anderen Trac Benutzer nicht einsehen.

Trac.Plugin.AutoCompleteUsers.png

Erfahrungswerte von Agilo

Allgemeine Informationen

Agilo for Scrum wird vertrieben unter der Apache License 2.0 und ist ein Open Source Tool zum Verwalten von Softwareentwicklungsprozessen der Projektmanagement- Methode Scrum. Hauptsächlich unterscheidet sich die agile Vorgehensweise Scrum von der klassischen Software-Entwicklungsmethoden darin, dass das Team als Management Rolle agiert. Eine Besonderheit von Agilo gegenüber anderer Scrum Software ist, dass Agilo nicht nur das Projektmanagement sondern auch das Team bei der Entwicklung selbst unterstützt.

Agilo for Scrum gibt es in der kostenlosen Version und in der Pro Version. Agilo Pro kostet für einen Benutzer 7,50 Euro in einem Monat und stellt im Gegensatz zur kostenlosen Version ein Whiteboard zur Verfügung.

Für alle die bereits mit Trac arbeiten ist Agilo ein echte Ergänzung. Es bietet eine verbesserte Benutzeroberfläche und bietet einen Satz von Plugins, die die Standardfunktionalität von Trac erweitern, z.B. FilteredTicket Plugin, Links Plugin, ScrumDashboard Plugin und viele mehr.

Eindrücke


Zu Abbildung 1:
Ein Whiteboard ist ein wichtiger Bestandteil eines jeden Team-Meetings, ob nun digital oder als Wandtafel. Das digitale Whiteboard der Agilo Pro Version erlaubt es den Teammitgliedern durch Drag&Drop die einzelnen Tickets zu verschieben und somit den Status der Bearbeitung zu verändern. Des Weitern lassen sich zu jedem Ticket ein Teammitglied, also einen Verantwortlichen zuordnen.

Durch wenige Mausklicks lassen sich sehr schnell neue Tasks anlegen und die dafür vorgesehene Bearbeitunszeit festlegen. Zusätzlich bekommt man auch Informationen zu der dazugehörigen User-Story.

Zu Abbildung 2:
Das Balkendiagramm gibt den Teammitgliedern Auskunft über den aktuellen Status einer Taskbearbeitung. Hierbei unterscheidet man zwischen den gesamten, den geplanten und den geschlossenen Tasks. Daselbe gilt auch für die einzelnen User-Stories.

Zu Abbildung 3:
Das Kreisdiagramm sagt etwas über die Auslastung bzw. über die Verfügbarkeit der einzelnen Team-Mitgliedern aus. Die farbigen Kreissegmente werden jedem Mitglied zugeordnet und spiegeln prozentual die Verfügbarkeit wider. Genauer bedeutet das, das Mitglieder mit einer hohen Prozentzahl ziemlich ausgelastet sind und Mitglieder mit einer niedrigeren Prozentzahl eher verfügbar sind. Die Mitglieder die also nicht in dem Kreisdiagramm erscheinen und somit einen Auslastung von 0 Prozent haben, sind verfügbar für neue Tasks.

Zu Abbildung 4:
Der Sprint-Burndown zeigt in einer grafischen Darstellung die Verringerung ("Burndown") des Sprint-Restaufwandes pro Tag über die Sprint-Dauer. So kann durch einen Vergleich des tatsächlichen Fortschritts mit dem geplanten der Projektfortschritt überprüft werden. Das "Sprint Burndown Chart" visualisiert also den aktuellen Restaufwand, um jederzeit den Sprint Fortschritt ersehen zu können. Es gibt Angaben zu den vorhandenen Kapazitäten, sowie jeweils eine Kurve zum idealen und aktuellen Fortschritt. Zusätlich liefert es einen Trend, der sich abzeichnet, um frühzeitig auf sich abzeichnende Verzögerungen reagieren zu können.

Fazit

Agilo for Scrum legt sehr viel Wert auf die Visualisierung und die grafischen Veranschaulichungen von User-Stories und Tasks. Ein Umstieg lohnt sich eigentlich nur auf die Pro-Version, da diese das digitale Whiteboard im Lieferumfang mitbringt. Doch bei einer monatlichen Gebühr von 7,50 Euro pro Benutzer ist es dann eher fragwürdig, ob es Sinn macht auf Agilo Pro umzusteigen.

Einen großen Defizit zeigt Agilo im Bezug auf die Kompatibilität mit dem Trac auf. Aktuell lässt sich das Agilo-Plugin in der Trac-Version 0.11 fehlerfrei integrieren. Bei der derzeit neuesten Trac-Version 0.12 gibt es jedoch Konflikte bei dem Installieren des Plugins, welche das Benutzen unmöglich machen.

Bei Projekten mit einer kleinen Anzahl an Team-Mitglieder sind Funktionalitäten wie zum Beispiel das Kreisdiagramm nicht zwingend notwendig, da sich das Team meist im selben Raum oder auch im selben Gebäude befindet, und man somit immer über die Auslastung bzw. die Verfügbarkeit der anderen Mitglieder informiert ist.

Verteilt sich jedoch ein Projekt eines Teams über mehrere Gebäude oder sogar über mehrere Länder, so ist es von großer Wichtigkeit ständig über die aktuelle Auslastung bzw. die Verfügbarkeit eines jeden Einzelnen bescheid zu wissen, um somit ohne Zeitverlust weitere Tasks zuordnen zu können, damit ein Leerlauf vermieden wird.

Projektwoche - Fazit

Retrospektive

Was war gut was war schlecht?

Positiv

  • Pair-Programming: Was Anfangs eher schleppend erschien, zeigte sich nach kurzer Zeit als sinnvolle agile Praktik. Durch die Rotation der Teammitglieder, konnte jedes Mitglied Einsicht in jeden Bereich bekommen.
  • StandUp-Meetings: Am sinnvollsten Morgens, halfen sehr gut, um das Team auf den aktuellen Stand des Projektes zu bringen.
  • Crisis-Meetings: Durch die Meetings mit dem "Kunden" konnte man einen Einblick erhalten, wie Crisis-Meetings bei späteren Projekten im realen Umfeld ablaufen.
  • Durch die räumliche Begrenzung waren kurze Kommunikationswege möglich. Dadurch konnte sich die Gruppe ständig austauschen/helfen.
  • Durch das Whiteboard von Agilo, konnte das Ticketsystem von TRAC für das Team besser genutzt werden.
  • Durch die Projektwoche konnte man einen kleinen Einblick in die spätere Arbeitswelt erlangen. Man war von keinen Kursen/Klausuren abgelenkt, womit das Projekt immer im Vordergrund stand.

Negativ

  • Agilo hat nicht richtig funktioniert, was eventuell auch an Bedienungs-/Konfigurationsfehlern seitens der Gruppe lag. Eine längere Einarbeitungszeit war aber durch den geringen zeitlichen Rahmen der Projektwoche nicht gegeben.
  • Erster Tag (Pair-Programming) war von der Zeit zu knapp bemessen. Durch die unterschiedlichen Schwierigkeitsgrade der Features/Bugs war es schwer eine korrekte Aufwandsabschätzung zu erbringen, so konnten einige Punkte der Aufgabenstellung, wie z.B. Unit-Tests, nicht realisiert werden.
  • Test-First-Ansatz war bei manchen Features/Bugs nicht durchsetzbar.