Scrum im Sopra: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Dietsch (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Langenfeld (Diskussion | Beiträge)
Weiterleitung nach Ablauf erstellt
Markierungen: Neue Weiterleitung 2017-Quelltext-Bearbeitung
 
Zeile 1: Zeile 1:
{{TOCRight}}
#REDIRECT [[Ablauf]]
 
Im Softwarepraktikum wird das Vorgehensmodell [[Scrum]] in angepasster Form angewendet. Unsere Anpassungen sollen vor allem den Verwaltungsaufwand reduzieren, die in Scrum beschriebenen Artefakte auf [[Gitea]] übertragen, mehr Raum für Fehler lassen, und die auf den Prozess aufgesetzten [[Formalien|Zulassungskriterien]] unterstützen.
 
== Scrum-Artefakte in Gitea ==
* Ein '''[[Sprint]]''' wird in [[Gitea]] durch einen Milestone (<code>Issues -> Milestones</code>) dargestellt. Die Gitea-Milestones bekommen dann den Namen <code>Sprint<woche> (Beschreibung)</code> also zum Beispiel <code>Sprint00 (Hausaufgabe)</code>.
* Das '''Product Backlog''' besteht in Gitea aus allen [[Item]]s (<code>Issues</code>) die noch keinem Sprint zugeordnet wurden.
* Eine '''User Story''' ist ein Issue dem das Label <code>user story</code> zugewiesen wurde. Zu jedem ''[[Ablauf#Sprint_Planning_.28max._60min.29|Sprint planning]]'' sollten alle User Stories außerdem ein Label für die Priorität (<code>prioritiy: high</code>,...) haben.
* Ein '''Task''' ist ein Issue ohne spezielle Labels.
* Ein '''[[Sprint Backlog]]''' besteht aus allen [[Item]]s, die einem [[Sprint]] zugewiesen wurden (<code>Issues -> Milestones -> <Sprintname></code>). Alle Items im Sprint Backlog müssen eine Priorität (normalerweise <code>prioritiy: high</code>) und eine [[ETC|Aufwandsabschätzung]] haben (z.B.: <code>estimate: 2</code>,...).
 
Das [[Git]]-Repository verwendet mindestens zwei Branches:
*'''Master:''' Hier wird das Spiel aktiv entwickelt.
*'''Release:''' Hier wird jeweils die Arbeit für einen abgeschlossenen Sprint mittels [[Gitea#Pull_Request|Pull-Request]] veröffentlicht. Dieser Branch (nur dieser) wird dazu verwendet die Arbeit der Sprints und das Spiel zu bewerten und repräsentiert den aktuell auslieferbaren Stand des Produkts.
 
== Backlog Items und Kooperation im Softwarepraktikum ==
Die Arbeit im Softwarepraktikum wird durch [[Item]]s im [[Product Backlog]] und [[Sprint Backlog]] organisiert. Jedes Item im Sprint Backlog wurde im [[Ablauf#Sprint_Planning_.28max._60min.29|Sprint Planning]] für den [[Sprint]] ausgesucht und die notwendige Arbeitszeit um das Item gemäß [[DoD]] fertig zu stellen wurde geschätzt. Folgende Aufgaben sollten im Sprint Backlog geplant werden:
 
* Arbeit am Spiel (z.B.: Programmieren, Bugfixing, das Suchen, Erstellen und Integrieren von Assets, Recherche von Algorithmen, usw.)
* Arbeit am Spieldesign (z.B.: Schreiben am [[GDD]] und Recherche über die Problemdomäne, gemeinsame Ideenfindung, usw.)
* Qualitätssicherung (z.B.: [[Ablauf#Wiederkehrende_Aufgaben|wiederkehrende Aufgaben]] wie [[CleanCode|Clean Code]] und Architekturplanung, usw.)
* Organisationsaufgaben (z.B.: [[Product Owner]] Tasks, Kontakt mit den Kundenvertretern, usw.)
* Coaching (z.B.: [https://de.wikipedia.org/wiki/Paarprogrammierung Pair Programming], andere Gruppenmitglieder unterstützen, Präsentationen vorbereiten und proben)
 
Nur Vorlesungen, [[Formalien#Pr.C3.A4sentationen|Präsentationen]] und die [[Ablauf#W.C3.B6chentliches_Gruppentreffen_mit_Tutor|wöchentlichen Treffen]] sind bereits von der vorgesehenen Arbeitslast abgezogen und sollen ''nicht'' als Backlog Items erstellt werden.
 
=== Gemeinsame Tickets und Unterstützung ===
[[Item]]s für einen [[Sprint]] sollten möglichst so angelegt werden, dass sie überschaubar und für eine Person alleine zu bewältigen sind. In manchen Fällen ist dies aber nicht möglich. Zum Beispiel können sich manche Gruppenmitglieder die Aufgabe alleine nicht zutrauen, benötigen Hilfe um schneller mit einem unbekannten Teil des Quellcodes arbeiten zu können, oder die gesamte Gruppe möchte sich zum Testspielen oder Diskutieren treffen. Entsprechende [[Item]]s können von mehreren Studenten gleichzeitig bearbeitet werden. Dabei ist zu beachten:
 
* Die [[ETC|geschätzte Zeit]] ist die ''Gesamtarbeitszeit'' und wird jedem zugewiesenen Gruppenmitglied zu gleichen Teilen gutgeschrieben, nachdem das Item erfolgreich geschlossen ist. Bei mehreren <code>estimate</code> Labels wird nur das höchste ausgewertet, die Labels werden also insbesondere nicht aufsummiert.
* Jedes auf einem [[Item]] zugewiesene Gruppenmitglied muss am Ende des [[Sprint]]s auch daran gearbeitet haben (d.h. Zeit verbucht haben), sonst gilt das Item für dieses Mitglied als nicht erfüllt.
 
Es ist auch möglich, dass Aufgaben nicht zu gleichen Teilen allen beteiligten Gruppenmitgliedern zugeschrieben werden soll. In diesem Fall sollten zwei Tickets mit entsprechenden [[ETC|Estimates]] und Beschreibungen angelegt werden. Zum Beispiel könnte ein Gruppenmitglied eine größere Programmieraufgabe mit geschätzten acht Stunden wählen, ist sich aber nicht sicher das Prinzip von [https://gameprogrammingpatterns.com/component.html Komposition], dass für die Aufgabe notwendig erscheint, verstanden zu haben. Ein anderes Gruppenmitglied möchte gerne helfen und würde schätzen, dass Komposition anhand des Beispiels in zwei Stunden erklärbar sein sollte. Es werden also zwei Tickets angelegt, eines für die Programmieraufgabe mit einer Schätzung von acht Stunden und dem ersten Gruppenmitglied zugewiesen; und ein weiteres Ticket für die Unterstützung mit dem zweiten Gruppenmitglied und einer [[ETC]] von zwei Stunden.
 
=== Tickets während eines Sprints hinzufügen ===
Es kann vorkommen, dass plötzlich Probleme auftauchen, die beim [[Ablauf#Sprint_Planning_.28max._60min.29|Sprint Planning]] nicht vorhergesehen wurden.
Insbesondere Bugs, die nicht die eigene Arbeit behindern, aber zu reparieren sind, sollten als [[Item]]s im [[Product Backlog]] dokumentiert werden.
Dazu sollte das Gruppenmitglied, das den Fehler gefunden hat, ein Ticket mit einer reproduzierbaren Fehlerbeschreibung anlegen (normalerweise ''was'' ist der Fehler und eine ordentliche Beschreibung ''wie'' man den Fehler verursacht, nachdem man das Programm gestartet hat) und das <code>bug</code> Label setzen.
Im nächsten Sprint Planning kann dieser Bug dann wie andere Aufgaben auch geplant und zugewiesen werden.
 
Sollte ein Bug dringend, am besten sofort, gefixt werden müssen (da er z.B. die Arbeit an einem anderen [[Item]] blockiert), so sollte das [[Item]] direkt nach der Erstellung dem aktuellen [[Sprint]] zugewiesen werden und die Gruppe benachrichtigt werden.
Ein für die Funktion zuständiges Gruppenmitglied kann sich dann das [[Item]] zuweisen, eine [[ETC|Zeitschätzung]] eintragen (ebenfalls mit einer kurzen Begründung, damit der Tutor die Zeitschätzung im [[Ablauf#Sprint_Review_.28max._30min.29|Sprint Review]] nachvollziehen kann), und das Ticket bearbeiten.
Die Zeitschätzung zählt dann auch für die in den [[Formalien|Zulassungskriterien]] notwendige geschätzte Arbeitszeit.
 
== Abweichungen vom Scrum Modell im Softwarepraktikum ==
In Scrum ist es üblich, Aufgaben mit verschiedener Detailtiefe zu beschreiben, darunter die Beschreibungen einzelner Funktionen aus der Benutzersicht, die sogenannten [https://de.wikipedia.org/wiki/User_Story User Stories], die wiederum in einzelne Teilaufgaben, die Tasks zerlegt werden. Um den Prozess im Softwarepraktikum möglichst überschaubar zu halten, weichen wir von diesem Modell wie folgt ab:
 
* Im Softwarepraktikum liefert das [[GDD]] in den allermeisten Fällen eine ausreichende Beschreibung der Spielfeatures (vergleichbar mit einer Menge an User Stories). Im ''[[Ablauf#Sprint_Planning_.28max._60min.29|Sprint Planning]]'' werden die Tasks deshalb meistens direkt vom [[GDD]] abgeleitet.

Aktuelle Version vom 2. Dezember 2021, 11:42 Uhr

Weiterleitung nach: