Wiki source code of Projektarbeit

Version 10.2 by Marco Grawunder on 2026/08/26 09:44

Hide last authors
Marco Grawunder 8.1 1 {{info}}
2 Diese Seite beschreibt die **Organisation und Zusammenarbeit innerhalb der Projektgruppe**. Dazu gehören Projektmanagement, gemeinsame Arbeitsregeln, individuelle Verantwortungsbereiche, Projekttagebuch, wechselnde Sitzungsaufgaben und das gruppenweite Code-Review.
3 {{/info}}
Marco Grawunder 1.1 4
Marco Grawunder 8.1 5 {{toc/}}
6
7 = Projektmanagement organisieren =
8
Marco Grawunder 1.1 9 * Organisieren Sie Ihr Projekt bzw. Team,
Marco Grawunder 8.1 10 ** verteilen Sie in der zweiten Woche die [[Einzelaufgaben>>doc:Main.Projektarbeit.WebHome||anchor="HIndividuelleVerantwortungsbereicheundEinzelaufgaben"]],
Marco Grawunder 1.1 11 ** definieren Sie eine Reihenfolge für die Übernahme der Moderation und des Protokolls (z.B. nach Alphabet)
12 ** die Tagesordnung ist vom Moderator mindestens einen Tag vorher zu erstellen (dafür ggf. die Gruppe nach weiteren TOPs fragen)
13 ** definieren Sie Standards für Dokumente (LaTeX, UTF-8, ...)
Marco Grawunder 2.1 14 ** Führen Sie ein [[Projekttagebuch>>doc:Main.Projektarbeit.WebHome||anchor="HProjekttagebuch"]] (im Wiki)
Marco Grawunder 1.1 15 * Dokumentieren Sie immer alle Ergebnisse der Gruppe, wie
16 ** Protokolle,
17 ** Ausarbeitungen,
18 ** Präsentationen,
19 ** Software-Dokumente, etc.
20 * mit einer Zuordnung zu Personen in GitLab. **Verwenden Sie dafür die Wiki-Funktion von Gitlab** ([[https:~~/~~/docs.gitlab.com/user/project/wiki/>>https://docs.gitlab.com/user/project/wiki/]]).
21 * Geben Sie die Einzelaufgaben an
22 * Stellen Sie ein Gruppenbild (mit Namen) ein! Ideal ist es für mich und die Tutoren, wenn in dem Bild die Namen direkt als Text enthalten sind.
23 * Überlegen Sie sich für Ihre Aufgaben eine "Definition of Ready" und eine "Definition of Done", d.h. was muss für eine Aufgabe erledigt sein, bevor sie als erledigt angesehen werden kann. (siehe z.B. [[https:~~/~~/www.scrum-events.de/was-ist-die-definition-of-done-dod.html>>url:https://www.scrum-events.de/was-ist-die-definition-of-done-dod.html]])
24 * Erstellen Sie basierend auf den Vorgaben der Veranstaltung eine Produktvision. (vgl. z.B. [[https:~~/~~/www.wibas.com/scrum/product-vision/de)>>url:https://www.wibas.com/scrum/product-vision/de]]
25
Marco Grawunder 8.1 26 Sprints allein gewährleisten noch keine langfristige Orientierung. Definieren Sie deshalb zusätzliche **Meilensteine**, zu denen konkrete fachliche Ergebnisse erreicht sein sollen. Einige sind vorgegeben (vgl. [[Meilensteine>>doc:Main.Softwareentwicklung.WebHome||anchor="HVorgegebeneMeilensteine"]]). Verwenden Sie zur Meilensteindefinition nicht nur die Präsentationstermine!
Marco Grawunder 1.1 27
Marco Grawunder 8.1 28 = Zusammenarbeit und Verhaltensregeln =
Marco Grawunder 1.1 29
30 * **Allgemeine Regeln innerhalb der Gruppe**
31 ** alle
32 *** sind vorbereitet und nehmen aktiv teil
33 *** erledigen ihre Aufgaben vollständig und pünktlich
34 *** übernehmen aktiv Aufgaben
35 *** beachten Gruppenstandards
36 *** sind bereit, ihre Arbeit auf Fehler untersuchen zu lassen
37 **** Grundsätzliche Kritik bitte zunächst unmittelbar an eine Person, dann Gruppe, dann Tutor, dann Dozent
Marco Grawunder 8.1 38 **** Es gibt in jeder Gruppe einen Konfliktbeauftragten (siehe [[Anforderungen Einzelleistungen>>doc:Main.Projektarbeit.WebHome||anchor="HIndividuelleVerantwortungsbereicheundEinzelaufgaben"]]) geben
39 *** Diskriminierung wird in keinster Form geduldet! (siehe [[Spielregeln>>doc:Main.Projektarbeit.WebHome||anchor="HZusammenarbeitundVerhaltensregeln"]])
Marco Grawunder 1.1 40 *** Konsequenzen bei Nichterfüllung von übertragenen Aufgaben festlegen?
41 ** Jeder übernimmt Teile bei
42 *** Dokumentation und
43 *** Implementierung
44 *** keine „Doku-Sklaven“!
45 * **Kommunikationsregeln innerhalb der Gruppe**
46 ** Es sollte stets ein respektvoller Umgangston herrschen.
47 ** Jedes Gruppenmitglied hat das Recht auf freie Meinungsäußerung und wird in Gesprächen,
48 Diskussionen oder Vorstellungen nicht unterbrochen.
49 ** Gespräche und Diskussionen jeglicher Art finden stets auf einer sachlichen Ebene statt. Beleidigungen
50 jeglicher Form werden nicht toleriert.
51 ** Zwischenmenschliche Probleme werden direkt offen und nicht hinter dem Rücken des betreffenden
52 Gruppenmitgliedes kommuniziert.
53 * **Verhaltensregeln innerhalb der Gruppe**
54 ** Alle Gruppenmitglieder werden stets mit Respekt behandelt.
55 ** Kritik wird stets konstruktiv auf einer sachlichen Ebene geäußert.
56 ** Im Sinne der Projektarbeit kann der Fall eintreten, dass persönliche Ansichten zurückgestellt
57 werden müssen. Es wird somit ein hohes Maß an Kompromissbereitschaft vorausgesetzt.
58 ** Meinungen, welche von den eigenen Ansichten abweichen, werden stets toleriert.
59 ** Bei verursachten Fehlern wird stets die volle Verantwortung für das eigene Handeln übernommen.
60
61 == Keine Tolerierung von Diskriminierung jeglicher Art ==
62
63 Leider sind wir im Rahmen des „Software Projektes“ auf eine Reihe von Vorfällen aufmerksam geworden, bei denen es um sexualisiertes Verhalten oder Herabwürdigung aufgrund des Geschlechtes geht. Diese Vorfälle reichen von vermeintlich harmlosen „dummen Sprüchen“ bis hin zu direktem unerwünschtem körperlichem Kontakt.
64
65 Ich möchte noch einmal ausdrücklich darauf hinweisen, dass wir als Department für Informatik und natürlich auch als Universität Oldenburg jede Art von Diskriminierung in keiner Weise tolerieren. Ein solches Vorkommnis kann bis zum Ausschluss von der Veranstaltung, in weitergehenden Fällen sogar bis zur Exmatrikulation führen!
66
67 Wir wissen, dass dies in der großen Masse lediglich Einzelfälle sind, und es geht auf keinen Fall darum, das gesamte „Software Projekt“ zu beschuldigen. Wir möchten jedoch jeden Einzelnen und jede Einzelne dafür sensibilisieren, auf solche Situationen zu achten und gegebenenfalls entschärfend einzuwirken.
68
69 Die Betroffenen bitte ich darum, das Thema nicht mit sich herumzutragen, sondern die möglichen Kontaktmöglichkeiten zu nutzen. Nur dann, wenn das Thema offensiv angegangen wird, besteht die Chance, dass die Sensibilität für das Thema steigt!
70
71 Nachfolgend werden einige Informationen über Diskriminierung & Gewalt, dessen "Alarmglocken", Präventionsmöglichkeiten, Handlungsempfehlungen und die Aufgaben der Erstberatung zur Verfügung gestellt.
72
73 [[Alarmglocken>>attach:Alarmglocken.pdf]]
74
75 [[Aufgaben Erstberatung>>attach:Aufgaben Erstberatung.pdf]]
76
77 [[Handlungsempfehlungen Bystander>>attach:Handlungsempfehlungen Bystander_14.04.23.pdf]]
78
79 [[Prävention>>attach:Prävention.pdf]]
80
81 [[Sexualisierte Diskriminierung und Gewalt>>attach:Sexualisierte Diskriminierung und Gewalt.pdf]]
82
83 **Kontaktmöglichkeiten**
84
85 * Tutor/Tutorin der Gruppe
86 * Dozent der Veranstaltung
87 * Fachschaft Informatik: [[https:~~/~~/fachschaft-informatik.de/>>url:https://fachschaft-informatik.de/]]
88 * Dezentrale Gleichstellungbeauftragte der Informatik: [[https:~~/~~/uol.de/informatik/department/gremien-beauftragte/beauftragte>>url:https://uol.de/informatik/department/gremien-beauftragte/beauftragte]]
89 * Direktor/Direktorin des Departments: [[https:~~/~~/uol.de/informatik>>url:https://uol.de/informatik]]
90 * Erstanlaufstelle Antidiskriminierung des AStA: Donnerstags: 10:30 - 13:30 Uhr de/eng/farsi im AStA Trakt, Raum M1-157, [[beratung@asta-uol.de>>mailto:beratung@asta-uol.de||style="background-color: rgb(255, 255, 255);"]],
91 * conTakt: [[https:~~/~~/uol.de/contakt-beratungsstelle>>url:https://uol.de/contakt-beratungsstelle]]
92
Marco Grawunder 8.1 93 = Individuelle Verantwortungsbereiche und Einzelaufgaben =
Marco Grawunder 1.1 94
Marco Grawunder 8.1 95 Neben der eigentlichen Softwareentwicklung gibt es spezielle Aufgaben, die von den Teammitglieder als Querschnittsaufgaben übernommen werden müssen. Diese Spezialisten und Verantwortlichen arbeiten sich in das Thema ein, beraten die Mitglieder der Gruppe und sorgen dafür, dass die Anforderungen an diese Aufgabe eingehalten werden. Die Aufgaben können dabei von einzelnen Personen oder auch zu zweit übernommen werden. Die Rollen sind als **Querschnitts- und Serviceaufgaben** zu verstehen. Wenn in einem Zeitraum für einen Verantwortungsbereich wenig Bedarf besteht, soll nicht künstlich Arbeit erzeugt werden; die Person unterstützt dann die reguläre Projektarbeit oder andere Verantwortungsbereiche. Entscheidend ist, dass es für das jeweilige Thema eine klar benannte Person gibt, die sich zuständig fühlt, bei Fragen unterstützen kann und darauf achtet, dass die vereinbarten Anforderungen berücksichtigt werden. In den Einschätzungen der Tutoren gibt es dafür auch ein Feld, welche die Felder "erfüllt", "nicht erfüllt" oder "war nicht notwendig" enthält.
Marco Grawunder 1.1 96
Marco Grawunder 8.1 97 Die kurzen Einführungen zu den Verantwortungsbereichen des ersten Blocks sollen im ersten Semester, möglichst innerhalb der ersten sieben Wochen, durchgeführt werden.
Marco Grawunder 1.1 98
99 Die Einzelaufgaben sollten **erst beim zweiten Treffen** vergeben werden. Vorher sollte sich jeder darüber informieren, was die Einzelaufgabe beinhaltet.
100
Marco Grawunder 10.2 101 == Kurzvortrag ==
102
103 Jeder muss einen Kurzvortrag halten, i.d.R. bezogen auf die Rolle
104
105
Marco Grawunder 8.1 106 == Verantwortungsbereiche / Rollen ==
Marco Grawunder 1.1 107
Marco Grawunder 8.1 108 {{info}}
109 Der Aufwand der Verantwortungsbereiche ist unterschiedlich und kann sich im Projektverlauf verändern. Die Einstufungen sind daher nur als Orientierung zu verstehen.
110 {{/info}}
Marco Grawunder 1.1 111
Marco Grawunder 9.1 112 {{expandable summary="Scrum-Master"}}
Marco Grawunder 1.1 113 * Sorgt dafür, dass der Scrum-Prozess am Laufen bleibt
114 * Kurze Zusammenfassung zu [[Scrum>>doc:Main.Scrum.WebHome||anchor="HEinkurzerDCberblick"]], ausführlicher in den Folien der VL und in [[Scrum im Detail>>doc:Main.Scrum.WebHome||anchor="HImDetail"]].
115 * Es sollte auf jeden Fall einen Stellvertreter geben, der ggf. die Rolle übernehmen kann (z.B. bei Krankheit oder Beendigung des SWPs).
116 * Diese Rolle ist mit die wichtigste Rolle im SWP und verlangt durchgehend sehr viel Kapazität. Ein Scrum-Master ist aus diesem Grund typischerweise weniger (aber trotzdem noch) an der Implementierung beteiligt.
117 * Der Scrum-Master kann zu Beginn des Softwareprojekts an einem Workshop teilnehmen (Einladung erfolgt zu Beginn) - die Teilnahme ist empfohlen.
118 * Der Scrum-Master kann während des gesamten Projekts hinweg an einem monatlichen **Scrum-Master-Treffen** teilnehmen (nähere Informationen werden im Workshop mitgeteilt) - die Teilnahme ist empfohlen.
119 * Aufwand: Sehr hoch
Marco Grawunder 9.1 120 {{/expandable}}
Marco Grawunder 1.1 121
Marco Grawunder 9.1 122 {{expandable summary="GitLab, Projektplanung und Product Owner"}}
Marco Grawunder 1.1 123 * Scrum hat das Problem, dass man beliebig "herumiterieren" kann. Diese Rolle soll dafür sorgen, dass das "Große und Ganze" nicht aus den Augen verloren geht. Die grundlegend definierten Meilensteine sollten dabei um weitere Meilensteine ergänzt werden. Diese Meilensteine sollen dabei helfen, Sprintziele zu definieren.
Marco Grawunder 8.1 124 * Projektplan/Meilensteinplan erstellen, aktualisieren und überwachen. Dabei ist es nicht notwendig, ein vollständiges Gantt-Diagramm über das komplette Semester zu erstellen.
Marco Grawunder 2.1 125 * [[Projekttagebuch>>doc:Main.Projektarbeit.WebHome||anchor="HProjekttagebuch"]] führen
Marco Grawunder 1.1 126 * Stundenzettelpflege überwachen
127 * Weiterhin soll diese Person als Ansprechpartner für GitLab dienen, d.h. sie sollte sich besonders informieren und ggf. bei Fragen und Problemen beratend zur Seite stehen.
Marco Grawunder 8.1 128 * Die Person übernimmt gemeinsam mit dem Tutor wesentliche Aufgaben des Product Owners: Sie achtet darauf, dass ausreichend vorbereitete Einträge im Product Backlog vorhanden sind und unterstützt deren Priorisierung.
129 * Sie achtet darauf, dass für die Arbeit im Sprint die vereinbarte Definition of Done berücksichtigt wird.
130 * Sie organisiert das Backlog Refinement. Dazu können kleinere, wechselnd zusammengesetzte Teilgruppen (**Ticket-Task-Force**) neue Tickets formulieren und Beschreibungen verbessern. Die Teilnehmer der Teilgruppen dürfen nicht über den ganzen Durchgang gleich bleiben sondern muss im Laufe der Zeit wechseln. Sollte die Gruppe sich gegen eine Ticket-Task-Force entscheiden, können die Tickets und Ticketbeschreibungen auch in der gesamten Gruppe gemeinsam erarbeitet werden.
Marco Grawunder 1.1 131 * Aufwand: Hoch
Marco Grawunder 9.1 132 {{/expandable}}
Marco Grawunder 1.1 133
Marco Grawunder 9.1 134 {{expandable summary="Client-Server-Kommunikation: OpenAPI, REST, WebSockets und Spring"}}
Marco Grawunder 1.1 135 * Kennt sich mit den entsprechenden Technologien aus und dient als Ansprechpartner
136 * Aufwand: Kann sehr variieren
Marco Grawunder 8.1 137 * Bei größeren Gruppen kann der Verantwortungsbereich sinnvoll in **API/Kommunikation (OpenAPI, REST, WebSockets)** und **Spring/serverseitige Architektur** aufgeteilt werden.
Marco Grawunder 9.1 138 {{/expandable}}
Marco Grawunder 1.1 139
Marco Grawunder 9.1 140 {{expandable summary="Git/GitLab und Reviewbeauftragter"}}
Marco Grawunder 1.1 141 * Der Inhaber kennt sich mit Git und Gitlab aus.
142 * Er kann in nicht Standard-Fällen helfen (z.B. wenn ein Mergen zu Konflikten führt)
143 * Der Inhaber dieser Rolle sollte sich auch darum kümmern, dass der Git-Workflow (Ticket → Branch → PR → Mergen) eingehalten, dass Merge-Requests sinnvoll abgearbeitet werden und nicht zu lange liegen bleiben.
144 * Im Laufe der Zeit sollte diese Rolle weniger wichtig werden, da alle den Workflow verinnerlicht haben.
145 * Die Gruppe muss mindestens ein gruppenweites Code-Review durchführen
146 * Der Review-Beauftragte ist dafür zuständig, dieses Review anzuleiten und rechtzeitig zu initiieren.
147 * Zusammen mit dem Codequalitätsbeauftragtem für die sinnvolle Durchführung der Abarbeitung der Merge-Requests zuständig.
Marco Grawunder 8.1 148 * Aufwand: Mittel
Marco Grawunder 9.1 149 {{/expandable}}
Marco Grawunder 1.1 150
Marco Grawunder 9.1 151 {{expandable summary="Codequalitätsbeauftragter und Patternbeauftragter"}}
Marco Grawunder 1.1 152 * Überwachung von Codierungsstandards
153 * Kennt sich mit Refactorings aus
154 * Kennt sich mit Code-Smells aus, also, was macht guten und was macht schlechten Code aus
Marco Grawunder 8.1 155 * Kennt sich mit Werkzeugen wie SpotBugs, Checkstyle und SonarLint/SonarQube aus.
Marco Grawunder 1.1 156 * Soll sich in die wichtigsten Pattern (wie MVP, Observer, Command-Pattern) einarbeiten
157 * Die Gruppe bei der Anwendung der Pattern unterstützen
158 * Den Code darauf hin untersuchen, ob an bestimmten Stellen Pattern besser gewesen wären
159 * Aufwand: Mittel
Marco Grawunder 9.1 160 {{/expandable}}
Marco Grawunder 1.1 161
Marco Grawunder 9.1 162 {{expandable summary="Testbeauftragter"}}
Marco Grawunder 1.1 163 * Der Testbeauftragte ist nicht dafür da, Tests zu schreiben!
164 * Die Person stellt ggf. Mockito und JUnit vor
Marco Grawunder 8.1 165 * Der Testbeauftragte unterstützt die Gruppe beim Schreiben von Tests und steht bei Fragen beratend zur Verfügung.
166 * Die Person achtet darauf, dass Tests nicht vernachlässigt werden, betrachtet regelmäßig die vorhandene Testabdeckung und macht auf unzureichend getestete Bereiche aufmerksam.
Marco Grawunder 1.1 167 * Die Person sorgt dafür, dass Tests, die nicht automatisiert erstellt werden (z.B. Test von Oberflächen) dokumentiert werden.
168 * Aufwand: Mittel
Marco Grawunder 9.1 169 {{/expandable}}
Marco Grawunder 1.1 170
Marco Grawunder 9.1 171 {{expandable summary="Dokumentations- und Backupbeauftragter, Wiki, LaTeX-Beauftragter"}}
Marco Grawunder 8.1 172 * Achtet darauf, dass die erforderlichen Dokumente erstellt, kontinuierlich gepflegt und gesichert werden. Die Rolle ist **nicht** dafür zuständig, die gesamte Dokumentation allein zu schreiben.
Marco Grawunder 1.1 173 * Erstellung/Anpassung von Vorlagen, Hilfe
174 * Musterdokumente, Standards, Ablagestrategie, Qualitätssicherung, Bereitstellungsstrategie
175 * Die Rolle achtet darauf, dass Dinge die fertig sind, auch bereits dann ausreichend dokumentiert werden.
176 * Aufwand: Mittel
Marco Grawunder 9.1 177 {{/expandable}}
Marco Grawunder 1.1 178
Marco Grawunder 10.1 179 {{expandable summary="Konfliktmanagement"}}
Marco Grawunder 1.1 180 * Es kommt ab und zu vor, dass im SWP gruppeninterne Konflikte auftreten.
181 * Diese Rolle soll sich im Vorfeld (also bevor etwas "schief" geht), damit befassen, welche Methoden und Ansätze es gibt, in Gruppen mit solchen Konflikten umzugehen.
182 * Es macht Sinn, dass es jemanden zweiten gibt, der sich als Stellvertreter ebenfalls mit dieser Aufgabe befasst, falls die Person, die diese Rolle eigentlich inne hat, selber der Auslöser eines Konfliktes ist.
183 * Aufwand: Hängt massiv von der Gruppe ab ... Kann sehr wenig, kann aber auch sehr komplex werden.
Marco Grawunder 10.1 184 {{/expandable}}
Marco Grawunder 1.1 185
186 Falls alle Rollen vergeben sind, können noch folgende ergänzend dazu kommen.
187
188 * Spielregeln
189 * Frontend (z.B. JavaFX oder Web-Frontends)
190 * Spezielle Rolle für REST, WebSockets und OpenAPI und dafür in der obigen Rolle (OpenAPI, REST und Spring) nur noch Spring
Marco Grawunder 8.1 191 * Programmierkonzepte
192 ** z. B. Dependency Injection mit Spring
Marco Grawunder 1.1 193 * DB-Zugriff:
194 ** Installation/Überwachung der DB
195 * Spezialisten für verschiedene Teilthemen:
196 ** Netzwerkkommunikation
197 ** Regeln des aktuellen Spiels
198 ** Weitere Frameworks
199 ** GUI
200
201 === Projekttagebuch ===
202
203 Im Projekttagebuch werden kurz und knapp die Ergebnisse der Sprints festgehalten und der Ablauf der Projekte als Ganzes dokumentiert.
204
205 Für jeden Sprint wird hier geschrieben,
206
207 * welche Stories umgesetzt wurden.
208 * wie das Review gelaufen ist.
209 * wie die Retrospektive gelaufen ist und welche Maßnahmen ergriffen worden sind, um Probleme im nächsten Sprint zu reduzieren.
210
211 Außerdem:
212
213 * Wann wurden Meilensteine erreicht
214 * Wann wurden Meilensteine verschoben und (ganz wichtig!) was waren die Gründe dafür
215 * Wann wurden andere wichtige Zwischenziele erreicht
216 * Welche besonderen Dinge hat es gegeben, die wesentlichen Einfluss auf das Projekt oder die Gruppe hatten
217
Marco Grawunder 8.1 218 == Wechselnde Aufgaben innerhalb der Gruppe ==
Marco Grawunder 1.1 219
220 Diese Aufgaben wechseln wöchentlich:
221
222 * Sitzungsleitung und Moderation
223 ** Leitung der Gruppensitzung (Wichtig!!), Support durch Scrum-Master
224 ** Tagesordnung definieren (vorher)!!
Marco Grawunder 8.1 225 ** Ein Moderator ist dafür zuständig, dass die Sitzungen geregelt ablaufen, d.h. insbesondere muss ein Moderator darauf achten, dass die Teilnehmer sich an die Regeln (siehe: [[Spielregeln>>doc:Main.Projektarbeit.WebHome||anchor="HZusammenarbeitundVerhaltensregeln"]]) halten, jeder Sprechzeit bekommt und eine Kommunikation möglich ist, d.h. im Zweifelsfall auch Diskussionen zu unterbrechen. 
Marco Grawunder 1.1 226 Hier gibt es weitere Hinweise zu der Aufgabe eines Moderators: [[https:~~/~~/www.openpr.de/news/1231293/Was-sind-die-Aufgaben-eines-Moderators.html >>url:https://www.openpr.de/news/1231293/Was-sind-die-Aufgaben-eines-Moderators.html%C2%A0]]
227 * Protokollführung
228 ** Erstellung eines Protokolls der Gruppensitzung
229 ** Hier reicht i.d.R. ein Ergebnisprotokoll
230 ** Protokolle müssen direkt im Wiki abgelegt sein (nicht als PDF, damit sind die einfacher lesbar)
231 * Zu Beginn jeder Gruppensitzung („Daily Scrum“):
232 ** findet ein kurzes „Briefing“ („Blitzlicht“) statt, in der jede/r berichtet, was sie/er in der letzten Woche für das Projekt getan hat.
233 * Am Ende jeder Sitzung neue Aufgabenverteilung
234 ** Tickets (wer macht was)
235 ** Leitung/Protokoll (Liste!)
236 * Tutor ist nur Berater, leitet keine Sitzungen, kann aber um Rat gefragt werden (und greift (zu Beginn mehr und Ende weniger) ein, wenn es zu sehr „aus dem Ruder läuft“, erlaubt aber auch Fehler …)
237
Marco Grawunder 8.1 238 = Gruppenweites Code-Review (Team-Review) =
Marco Grawunder 1.1 239
Marco Grawunder 8.1 240 {{info}}
241 **Kurzfassung:** Mindestens einmal im Projekt wird ein nicht trivialer Codebereich gemeinsam reviewt. Der Kontext wird vorbereitet, die gesamte Gruppe beteiligt sich am Review, Ergebnisse werden dokumentiert und konkrete Verbesserungsmaßnahmen anschließend nachverfolgt.
242 {{/info}}
243
Marco Grawunder 1.1 244 Neben den üblichen Pull-Request-Reviews soll im Projekt mindestens ein **gruppenweites Code Reviews** durchgeführt werden. Dieses dienen nicht primär der Fehlersuche, sondern dem **gemeinsamen Verständnis, der Diskussion von Lösungsansätzen und dem Lernen im Team**.
245
Marco Grawunder 9.1 246 {{expandable summary="Detaillierte Anleitung zum Gruppenreview"}}
Marco Grawunder 1.1 247 == Ziel des Gruppenreviews ==
248
249 Das gruppenweite Review soll dabei helfen:
250
251 * die **gesamte Codebasis besser zu verstehen**
252 * **Designentscheidungen nachvollziehen und hinterfragen zu können**
253 * voneinander zu lernen (gute Lösungen, typische Probleme)
254 * Wissen im Team zu verteilen (kein „Ein-Personen-Code“)
255
256 Wichtig: Es geht **nicht darum, jemanden zu bewerten**, sondern gemeinsam besseren Code zu entwickeln.
257
258 == Organisation ==
259
260 * Durchführung: **mindestens einmal im Semester**
261 * Dauer: **30–60 Minuten**
262 * Vorstellung von **1–2 ausgewählten Codeausschnitten**
263
264 == Rollen im Review ==
265
266 === Autor:in ===
267
268 * stellt den Code vor
269 * (((
270 erklärt:
271
272 * Ziel und Kontext
273 * wichtige Designentscheidungen
274 * ggf. offene Fragen oder Unsicherheiten
275 )))
276
277 === Gruppe (Reviewer) ===
278
279 * stellt Verständnisfragen
280 * gibt Feedback
281 * diskutiert Alternativen
282
283 === Moderator:in ===
284
285 * achtet auf Zeit und Struktur
286 * sorgt dafür, dass alle beteiligt werden
287 * verhindert Abschweifen
288
289
290
291 == Ablauf eines Gruppenreviews ==
292
293 === 1. Vorbereitung (Autor:in) ===
294
295 * Wählt einen **überschaubaren Codeausschnitt** (keine sehr großen Änderungen)
296 * (((
297 Fokus z. B. auf:
298
299 * interessante Logik
300 * Architekturentscheidungen
301 * schwierige oder unklare Stellen
302 )))
303 * (((
304 Bereitet **2–3 konkrete Fragen** vor, z. B.:
305
306 * „Ist diese Struktur sinnvoll?“
307 * „Wie würdet ihr das testen?“
308 * „Gibt es eine einfachere Lösung?“
309 )))
310
311 === 2. Vorstellung (ca. 5–10 Minuten) ===
312
313 * (((
314 kurzer Überblick:
315
316 * Was macht der Code?
317 * Wo ist er im System eingeordnet?
318 )))
319 * keine detaillierte Zeilen-für-Zeilen-Erklärung
320
321 === 3. Gemeinsames Review (ca. 20–40 Minuten) ===
322
323 Diskussion des Codes anhand folgender Leitfragen:
324
325 ==== Verständlichkeit ====
326
327 * Ist der Code gut nachvollziehbar?
328 * Welche Stellen sind schwer verständlich?
329
330 ==== Design ====
331
332 * Ist die Struktur sinnvoll gewählt?
333 * Gibt es einfachere oder klarere Alternativen?
334
335 ==== Wartbarkeit ====
336
337 * Ist der Code leicht erweiterbar?
338 * Gibt es unnötige Komplexität?
339
340 ==== Testbarkeit ====
341
342 * Wie könnte man den Code testen?
343 * Sind relevante Tests vorhanden oder ableitbar?
344
345 === 4. Fazit (ca. 5 Minuten) ===
346
347 * Was war gut?
348 * Was kann verbessert werden?
349 * Welche Erkenntnisse nehmen wir als Team mit?
350
351 == Geeignete Inhalte für das Gruppenreview ==
352
353 **Gut geeignet:**
354
355 * neue Features mit Designentscheidungen
356 * komplexe Logik oder Algorithmen
357 * Refactorings
358 * Code, bei dem Unsicherheit besteht
359
360 **Weniger geeignet:**
361
362 * sehr kleine oder triviale Änderungen
363 * reine Formatierungsänderungen
364 * sehr große, unstrukturierte Codebereiche
365
366 == Feedback-Regeln ==
367
368 === Gutes Feedback ist: ===
369
370 * konkret („Die Methode ist schwer lesbar, weil …“)
371 * begründet („… dadurch wird der Ablauf schwer nachvollziehbar“)
372 * konstruktiv („Man könnte hier …“)
373
374 === Vermeidet: ===
375
376 * pauschale Aussagen („Das ist schlecht“)
377 * persönliche Kritik
378 * Diskussionen ohne Bezug zum Code
379
380 == Typische Probleme ==
381
382 * **Zu viel Code:** → stärker eingrenzen
383 * **Alle schweigen:** → gezielte Fragen stellen
384 * **Einzelne dominieren:** → Moderator:in steuert aktiv
385 * **Diskussion driftet ab:** → Fokus wieder auf Code lenken
386
387 == Minimal-Regeln ==
388
389 1. Es wird **nur ein überschaubarer Codeausschnitt** betrachtet
390 1. Eine Person stellt den Code vor
391 1. Die Gruppe diskutiert strukturiert
392 1. Am Ende werden **konkrete Erkenntnisse festgehalten**
393
394 == Hinweis ==
395
396 Das Gruppenreview ist eine **Lerngelegenheit**.
397 Bringt gerne auch Code mit, bei dem ihr unsicher seid – genau dort entsteht oft die beste Diskussion.
398
399 Man kann das auch mehrmals machen. Im SWP wird es aber nur einmal verlangt.
400
401 ----
Marco Grawunder 9.1 402 {{/expandable}}