Ablauf: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Dietsch (Diskussion | Beiträge)
Dietsch (Diskussion | Beiträge)
Zeile 44: Zeile 44:


==== Aufgabe schwieriger als gedacht ====
==== Aufgabe schwieriger als gedacht ====
Natürlich kann es vorkommen, dass man eine Aufgabe als zu leicht einschätzt und sich während der Bearbeitung abzeichnet, dass man die Aufgabe innerhalb des aktuellen [[Sprint]]s nicht erledigen kann. Daher ist es zum einen wichtig, bei den eigenen Aufgaben auf die Abhängigkeiten zu den Aufgaben anderer Teammitglieder zu achten und sich entsprechend abzusprechen (speziell sollte man vermeiden, erst kurz vorm Ende des [[Sprint]]s mit Aufgaben zu beginnen, die andere für die Erledigung ihrer Aufgaben brauchen). Zum anderen '''muss''' man seine Teammitglieder und den Tutor über die Gruppenliste rechtzeitig (sobald man merkt, dass die Zeit für eine Aufgabe nicht reicht) informieren, dass eine Aufgabe nicht mehr innerhalb des aktuellen [[Sprint]]s erledigt werden kann.
Natürlich kann es vorkommen, dass man eine Aufgabe als zu leicht einschätzt und sich während der Bearbeitung abzeichnet, dass man die Aufgabe innerhalb des aktuellen [[Sprint]]s nicht erledigen kann. Daher ist es zum einen wichtig, bei den eigenen Aufgaben auf die Abhängigkeiten zu den Aufgaben anderer Teammitglieder zu achten und sich entsprechend abzusprechen (speziell sollte man vermeiden, erst kurz vorm Ende des [[Sprint]]s mit Aufgaben zu beginnen, die andere für die Erledigung ihrer Aufgaben brauchen). Zum anderen '''muss''' man seine Teammitglieder und den Tutor über die Gruppenliste '''rechtzeitig''' (sobald man merkt, dass die Zeit für eine Aufgabe nicht reicht) informieren, dass eine Aufgabe nicht mehr innerhalb des aktuellen [[Sprint]]s erledigt werden kann.
{{BA|Greitschus|Hier wollte ich noch etwas einbauen wie (bis max. 24h vor dem Gruppentreffen) oder so, um die Rechtzeitigkeit auch nach oben zu beschraenken. War mir allerdings nicht so sicher, ob und wie man das so schreibt, dass es nicht klingt wie: Freitag ist treffen, ich merk Montag, dass die Zeit nicht reicht, schreib aber erst am Donnerstag.}}
{{BA|Greitschus|Hier wollte ich noch etwas einbauen wie (bis max. 24h vor dem Gruppentreffen) oder so, um die Rechtzeitigkeit auch nach oben zu beschraenken. War mir allerdings nicht so sicher, ob und wie man das so schreibt, dass es nicht klingt wie: Freitag ist treffen, ich merk Montag, dass die Zeit nicht reicht, schreib aber erst am Donnerstag.}}



Version vom 29. April 2014, 16:02 Uhr

Das Softwarepraktikum verwendet Scrum als Vorgehensmodell für die Softwareentwicklung und ist daher in insgesamt 13 Sprints (1 Sprint pro Woche) unterteilt.

Wöchentliches Gruppentreffen mit Tutor

Jeder Sprint beginnt und endet am wöchentlichen Gruppentreffen, das wie ein Scrum-Meeting organisiert ist. In diesem Treffen wird der letzte Sprint besprochen und der nächste Sprint geplant. Dazu ist das Treffen in 3 Teile unterteilt.

Sprint Review (max. 30min)

  • Product Owner gibt basierend auf DoD Einschätzung ab, was fertig und was nicht fertig ist.
  • Team zeigt, was alles fertig geworden ist und beantwortet Fragen zum Fortschritt.
  • Team erklärt dabei, was es für Probleme gab und wie diese gelöst worden sind.
  • Product Owner erklärt den aktuellen Stand des Product Backlogs und speziell Änderungen an der Aufwandsabschätzung.

Sprint Planning (max. 60min)

In diesem Teil des Treffens werden die Ziele für den nächsten Sprint geplant.

Ablauf

Zuerst sollte geklärt werden, wie viel Zeit jedes Teammitglied und damit das gesamte Team für den nächsten Sprint bereitstellen kann. Danach wählt man gemeinsam ein Item (unter Berücksichtigung der Priorität) aus dem Product Backlog aus, das im nächsten Sprint umgesetzt werden soll. Das Item sollte nun so lange in kleinere Items, zerlegt werden (z.B. zuerst in User Stories und dann in Tasks, oder auch direkt in Tasks), bis diese direkt als an einzelne Teammitglieder verteilt werden können. Für jedes der so entstandenen atomaren Items sollte nun der Arbeitsaufwand (ETC) abgeschätzt werden. Danach werden die atomaren Items in das neue Sprint Backlog verschoben. Diesen Vorgang wiederholt man nun so lange bis man die Zeit, die das Team für den nächsten Sprint zur Verfügung hat, aufgebraucht hat. Erst danach werden die einzelnen Items im Sprint Backlog unter den Teammitgliedern aufgeteilt. Am Ende diesen Teils kommt man somit zu einem neuen Sprint Backlog mit einer Liste von Items die jeweils einem Verantwortlichen zugeteilt sind.

Wiederkehrende Aufgaben

Während des Softwarepraktikums kann es sinnvoll sein, bestimmte organisatorische Aufgaben in jedem Sprint immer wieder neu zu verteilen. Dadurch kann sichergestellt werden, dass der Aufwand für diese Aufgaben auch honoriert wird und der Prozess reibungsloser abläuft.

Folgende Aufgaben bieten sich an:

  • Product Owner (z.B. ab Woche 2)
    • Pflegen und Anpassen von Requirements und User Stories im Product Backlog.
    • Verfeinern von Requirements zu User Stories.
    • Requirements nach Entwicklungsreife ordnen.
    • Gruppentreffen vorbereiten (was ist fertig, wie war die Aufwandsabschätzung).
  • Architektur (z.B. ab Woche 3)
    • Schnittstellen definieren.
    • Architekturbeschreibungen pflegen.
    • Einhaltung der Architektur sicherstellen.
  • Coaching (z.B. ab Woche 3)
    • Code Reviews vorbereiten und durchführen.
  • Qualitätssicherung (z.B. ab Woche 6)
    • Code auf Clean-Code Richtlinien prüfen.
    • ReSharper-Konformität im ganzen Projekt überprüfen und ggf. herstellen.

Aufgabe schwieriger als gedacht

Natürlich kann es vorkommen, dass man eine Aufgabe als zu leicht einschätzt und sich während der Bearbeitung abzeichnet, dass man die Aufgabe innerhalb des aktuellen Sprints nicht erledigen kann. Daher ist es zum einen wichtig, bei den eigenen Aufgaben auf die Abhängigkeiten zu den Aufgaben anderer Teammitglieder zu achten und sich entsprechend abzusprechen (speziell sollte man vermeiden, erst kurz vorm Ende des Sprints mit Aufgaben zu beginnen, die andere für die Erledigung ihrer Aufgaben brauchen). Zum anderen muss man seine Teammitglieder und den Tutor über die Gruppenliste rechtzeitig (sobald man merkt, dass die Zeit für eine Aufgabe nicht reicht) informieren, dass eine Aufgabe nicht mehr innerhalb des aktuellen Sprints erledigt werden kann.

Ohne diese Mitteilung zählt die jeweilige Aufgabe als nicht abgeschlossen und führt zu Punkteverlust bei den wöchentlich erreichbaren Punkten der Eigenleistung (siehe Benotung).

Sprint Retrospective (max. 15min)

  • Diskutieren, was im letzten Sprint im Hinblick auf Menschen, Beziehungen, Prozesse, Tools gut bzw. schlecht gelaufen ist.
  • Wo muss etwas verändert oder verbessert werden, damit besser gearbeitet werden kann?
  • Plan erstellen, wie diese Änderungen im nächsten Sprint umgesetzt werden können.

Hinweise zur Arbeitsorganisation

Gemeinsam arbeiten

Außerhalb des offiziellen Gruppentreffens ist es sinnvoll zu versuchen, weitere feste Treffen zu vereinbaren, an denen gemeinsam an der Umsetzung des Spiels gearbeitet werden kann. Oftmals reicht es auch schon, gemeinsame Zeiten zu vereinbaren in denen man von Zuhause aus arbeitet, sich aber gegenseitig über synchrone Kommunikationsmedien (Skype, IRC, Instant Messaging,...) erreichen kann.

Bei diesen Treffen ist es sinnvoll, zuerst ein Daily-Scrum zu machen. Ein Daily-Scrum ist ein Scrum-Meeting, das max. 15min dauert und bei dem jeder Teilnehmer folgende Fragen beantwortet, ohne das andere Teilnehmer Rückfragen stellen oder Kommentare abgeben:

  • Was wurde seit dem letzten Meeting gemacht?
  • Was wird bis zum nächsten Meeting gemacht?
  • Was für Probleme gibt es, die die aktuellen Aufgaben behindern?

Probleme werden hierbei nur kommuniziert, jedoch noch nicht gelöst. Dies dient dem Zweck, dass jedes Gruppenmitglied innerhalb von 15 min über die Arbeit und Probleme aller anderen Mitglieder informiert ist. Im Anschluss an das Daily-Scrum können dann die vorhandenen Probleme angegangen und gelöst werden.

Kommunizieren

  • Auch für sich selbst den Sprint planen
  • Abhängigkeiten berücksichtigen
  • Trac richtig benutzen
  • Abschätzungen korrigieren
  • Code Review