Scrum
Was ist Scrum?
Scrum ist ein iterativer Prozess. Bei Scrum wird die Entwicklung des Produkts in Zyklen unterteilt, welche Sprints genannt werden. Ein Sprint ist eine Iteration die im Sopra eine Woche dauern soll und es findet immer ein Sprint nach dem anderen statt. Ein Sprint hat einen festen Zeitraum und endet, egal ob die Arbeit abgeschlossen wurde oder nicht, ohne verlängert zu werden. Zu Beginn eines Sprints müsst ihr eine Liste von Dingen (Sprint Backlog) aus einer priorisierten Liste von Anforderungen (Product Backlog) auswählen, welche bis zum Ende des Sprints abgeschlossen werden sollen. Wenn der Sprint zu Ende ist, demonstriert ihr was ihr entwickelt habt, könnt Fragen oder Probleme klären und erhaltet Feedback (das geschieht im wöchentliche Scrum-Meeting mit dem Tutor; bei Fragen/Problemen etc. könnt ihr euch natürlich auch zwischendurch melden). In der Regel wird der Code der während eines Sprints erzeugt wurde als "fertig" angesehen, was bedeutet, dass dieser keine Änderungen/Korrekturen mehr erfordern sollte.
Scrum-Meeting
Ein Scrum-Meeting ist ein Treffen, an dem alle Teammitglieder anwesend sind, das eine fest definierte Zeitschranke (Timeboxed) hat, und dessen Ziele klar definiert sind. Daily-Scrum, Sprint Planning Meeting, Sprint Review, Sprint Retrospektive sind Beispiel für Scrum-Meetings.
Sprint
Bei Scrum wird die Entwicklung eines Produkts in Zyklen unterteilt, welche Sprints genannt werden. Ein Sprint ist ein fester Zeitraum (im Softwarepraktikum eine Woche) in dem entwickelt wird. Zu Beginn eines Sprints wird in einem Sprint Planning Meeting durch das Team eine Liste von Items aus einer priorisierten Liste von Anforderungen (Product Backlog) ausgewählt, die bis zum Ende des Sprints abgeschlossen werden sollen. Bei der Auswahl wird für jedes Item der benötigte Aufwand zur Fertigstellung geschätzt um nicht zu viele Items für den aktuellen Sprint zu wählen. Wenn die Kapazität des Teams erreicht wurde, werden keine neuen Items mehr in das Sprint Backlog aufgenommen.
Am Ende des Sprints werden die Ergebnisse in einem Sprint Review Meeting allen Beteiligten demonstriert und basierend auf dem tatsächlich benötigten Aufwand die Kriterien zur Aufwandsabschätzung modifiziert.
Rollen
Artefakte
Product Backlog
Der erste Schritt in Scrum ist das Festhalten der Produktfeatures. Dies geschieht anfangs in Form einer priorisierten Liste von Anforderungen (Items), die im Softwarepraktikum aus dem GDD extrahiert werden können. Diese Liste ist das Product Backlog, welches über die gesamte Projektzeit existiert und sich auch im Projektverlauf noch iterativ weiterentwickeln kann. Das Product Backlog hält, in priorisierter Reihenfolge, alles fest, was das Team machen sollte. Im Verlauf der Entwicklung sollten die einzelnen Items nach und nach (d.h. im Verlauf eines Sprints) verfeinert werden, wodurch sich aus den anfänglichen Anforderungen konkretere Beschreibungen bis hin zu Spezifikationen entwickeln. Das Product Backlog umfasst in seinem Endzustand alle Inhalte des Produkts, z.B. Features ("der Spieler kann ein Auto steuern"), Entwicklungsanforderungen ("Menüs überarbeiten um sie flexibler zu gestalten"), Untersuchungen ("Konzepte untersuchen um die Kollisionsabfragen zu beschleunigen") oder bekannte Fehler ("Fehler in der Wegpunkt-Befahrung der KI diagnostizieren und beheben").
Items sollten entsprechend ihrer aktuellen Abstraktion strukturiert verfasst werden. Das kann z.B. in Anlehnung an User Stories[1] oder Anwendungsfälle[2] geschehen. Die Struktur sollte für Ihr Team und Ihr Produkt sinnvoll sein. Ihr Tutor bzw. die Sopra-Crew kann Sie dabei unterstützen. Mindestens jedoch sollte jedes Item eine Priorität besitzen. Das Product Backlog sollte kontinuierlich aktualisiert werden, um Änderungen in den Anforderungen, neue Ideen oder Erkenntnisse, technische Hürden etc. zu erfassen.
Neben der Priorität wird jedes Item im Product Backlog mit einer groben Abschätzung des erforderlichen Aufwands versehen. Diese Werte können auch für die Priorisierung der einzelnen Items hilfreich sein. Da die Abschätzungen relativ sind, könnten sie in einer beliebigen Einheit angegeben werden, anstatt "echte" Zeiten für Aufwand wie Personenstunden zu verwenden. Jedoch ist es meistens sinnvoll, konkrete Zeitangaben zu haben, da sich diese besser zur Verfeinerung der Selbsteinschätzung eignen. Wir empfehlen daher, ETC als Einheit zu verwenden.
Die Items im Product Backlog können, was ihre Komplexität angeht, stark variieren. Daher werden größere Items bei der Planung eines Sprints in kleinere Items unterteilt.
Die generelle Richtlinie besagt, dass man das was wichtig ist auf dem kleinsten Raum zusammenfassen soll der benötigt wird. In anderen Worten muss man nicht jedes mögliche Detail eines Items beschreiben, sondern nur klar machen, was benötigt wird um das Item als abgeschlossen ansehen zu können.
Im Softwarepraktikum sollte das Product Backlog wie auch das Sprint Backlog im Gitea geführt werden (siehe auch Scrum und Gitea)
Sprint Backlog
Das Sprint Backlog ist eine für den anstehenden oder laufenden Sprint ausgewählte Teilmenge des Product Backlogs und besteht wie dieses aus Items.
Typischerweise werden bei der Auswahl (im Scrum-Meeting) die aus dem Product Backlog entnommenen Items weiter verfeinert und falls nötig in kleinere Items unterteilt.
Im Softwarepraktikum sollte das Product Backlog wie auch das Sprint Backlog im Gitea geführt werden (siehe auch Scrum und Gitea)
Links und Ressourcen
Hier finden sich einige Artikel über Scrum, die von Menschen bzw. Firmen geschrieben wurden, die damit ihr Geld verdienen.
- Scrum Primer von GoodAgile, einem Scrum-Trainingsprovider aus dem asiatischen Raum.
- Scrum Alliance, eine NPO, die Scrum propagiert.
- Mountain Goat Software, ein Unternehmen das wie GoodAgile Scrum-Zertifizierungen und Trainings anbietet.
- Scrum-Master, eine deutschsprachige Scrum-Seite, die von einem Freiberufler namens Alexander Kriegisch erstellt wurde.