Hausaufgabe: Unterschied zwischen den Versionen
Aus Das Sopra Wiki
Keine Bearbeitungszusammenfassung |
Frank (Diskussion | Beiträge) .gitignore |
||
| (13 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
| Zeile 4: | Zeile 4: | ||
Zu Beginn des Softwarepraktikums soll sich jeder Teilnehmer mit [[CSharp|C#]], [[MonoGame]] und den dazugehörigen Werkzeugen vertraut machen. | Zu Beginn des Softwarepraktikums soll sich jeder Teilnehmer mit [[CSharp|C#]], [[MonoGame]] und den dazugehörigen Werkzeugen vertraut machen. | ||
Dazu werden Sie im Laufe dieser Hausaufgabe die Werkzeuge installieren, und damit ein kleines [[MonoGame]]-Programm schreiben. | Dazu werden Sie im Laufe dieser Hausaufgabe die Werkzeuge installieren, und damit ein kleines [[MonoGame]]-Programm schreiben. | ||
Die Hausaufgabe muss '''von jedem Teilnehmer''' in der ersten Woche (siehe [[Roadmap]]) verbindlich gemacht werden. <br> | Die Hausaufgabe muss '''von jedem Teilnehmer''' in der ersten Woche (siehe [[RoadmapWS2526|Roadmap]]) verbindlich gemacht werden. <br> | ||
Bitte beachten Sie: | Bitte beachten Sie: | ||
| Zeile 25: | Zeile 25: | ||
===Gitea vorbereiten=== | ===Gitea vorbereiten=== | ||
Um Gitea in Verbindung mit Scrum verwenden zu können, müssen vorher bestimmte Labels (siehe Abb. 1) für die Issues im Backlog eingerichtet werden. Prüfen Sie, ob diese bereits angelegt wurden. Fall nicht, legen Sie diese an: | Um Gitea in Verbindung mit Scrum verwenden zu können, müssen vorher bestimmte Labels (siehe Abb. 1) für die Issues im Backlog eingerichtet werden. Prüfen Sie, ob diese bereits angelegt wurden. Fall nicht, legen Sie diese an: | ||
*Klicken Sie auf <code>Issues -> | *Klicken Sie auf <code>Issues -> Label</code>. | ||
*Wenn noch keine Labels eingerichtet wurden, werden Sie gefragt ob | *Wenn noch keine Labels eingerichtet wurden, werden Sie gefragt ob ein bereits vorkonfiguriertes Labelset verwendet werden soll. Wählen Sie hier das Set <code>Sopra</code>. | ||
*Prüfen sie ob Labels für Priorität und Zeitabschätzung vorhanden sind, wie auf dem Bild zu sehen (Details können variieren). Wenn keine Labels zur Zeitabschätzung und Priorisierung vorhanden sind, löschen Sie alle Labels. Wählen Sie dann wie oben beschrieben das vorkonfigurierte Labelset für das Sopra. | *Prüfen sie ob Labels für Priorität und Zeitabschätzung vorhanden sind, wie auf dem Bild zu sehen (Details können variieren). Wenn keine Labels zur Zeitabschätzung und Priorisierung vorhanden sind, löschen Sie alle Labels. Wählen Sie dann wie oben beschrieben das vorkonfigurierte Labelset für das Sopra. | ||
<br clear="all"> | <br clear="all"> | ||
| Zeile 32: | Zeile 32: | ||
===Sprint für Hausaufgabe anlegen=== | ===Sprint für Hausaufgabe anlegen=== | ||
{{RefImg|gitea_firstsprintmilestone.png|500px|2|Den Hausaufgabensprint erstellen.}} | {{RefImg|gitea_firstsprintmilestone.png|500px|2|Den Hausaufgabensprint erstellen.}} | ||
Prüfen sie ob in Gitea ein Sprint | Prüfen sie ob in Gitea ein Sprint für die Hausaufgabe angelegt wurde. Falls nicht, legen Sie den entsprechenden Sprint (Milestone in Gitea) an: | ||
*Klicken Sie auf den Reiter <code>Issues -> Meilensteine</code>. | *Klicken Sie auf den Reiter <code>Issues -> Meilensteine</code>. | ||
*Falls kein Sprint ( | *Falls kein Sprint (Meilenstein) für die Hausaufgabe angezeigt wird (siehe Abb. 2), legen Sie einen Milesstone mit dem Namen <code>Sprint 00 (Hausaufgabe)</code> an. | ||
**Verwenden Sie das Datum für das Ende des Sprints das Abgabedatum auf der [[Hauptseite]]. | **Verwenden Sie das Datum für das Ende des Sprints das Abgabedatum auf der [[Hauptseite]]. | ||
<br clear="all"> | <br clear="all"> | ||
| Zeile 46: | Zeile 46: | ||
*Weisen Sie dem Sprint (Meilenstein) ''Sprint 00 (Hausaufgabe)'' zu. | *Weisen Sie dem Sprint (Meilenstein) ''Sprint 00 (Hausaufgabe)'' zu. | ||
*Drücken sie auf <code>Issue Erstellen</code>. | *Drücken sie auf <code>Issue Erstellen</code>. | ||
Hinweis: Die Tickets die Sie im Folgenden erstellen sind um ihre Aufgaben zu tracken. Sollten bereits Tickets mit den selben Titeln von einem anderen Gruppenmitglied existieren, legen Sie trotzdem neue Tickets für sich selbst an (und schließen sie später auch nur diese). | |||
=== Issues für Aufgabe 4 erstellen=== | === Issues für Aufgabe 4 erstellen=== | ||
| Zeile 61: | Zeile 62: | ||
{{RefImg|gitea_hausaufgabe_tasks_assigned.png|500px|4|Issues für die Hausaufgabe, vom Studenten akzeptiert und mit Zeitschätzung.}} | {{RefImg|gitea_hausaufgabe_tasks_assigned.png|500px|4|Issues für die Hausaufgabe, vom Studenten akzeptiert und mit Zeitschätzung.}} | ||
Bevor Sie mit den Aufgaben beginnen, sollten Sie sich die entsprechenden Issues zuweisen (siehe Abb. 4). | Bevor Sie mit den Aufgaben beginnen, sollten Sie sich die entsprechenden Issues zuweisen (siehe Abb. 4). | ||
*Wählen Sie eines ihrer Issues aus dem Sprintbacklog (<code>Issues -> | *Wählen Sie eines ihrer Issues aus dem Sprintbacklog (<code>Issues -> Meilensteine -> Sprint 00 (Hausaufgabe)</code>) aus, indem Sie auf den Titel des Issues klicken. | ||
*Geben sie eine Abschätzung wie lange | *Geben sie eine Abschätzung wie lange Sie benötigen werden um den Issue nach der Definition of Done umzusetzten. Weisen Sie das Label <code>est: 1</code> um die Abschätzung zu geben, dass es insgesamt eine Stunde Arbeit benötigt wird. Wenn sie vermuten, dass Sie mehr als eine Stunde benötigen, wählen Sie einen entsprechend höheren Wert aus. | ||
* Weisen Sie sich dem Issue zu, indem Sie auf das Zahnrad neben dem Schriftzug ''Zuständig'' klicken, und ihren Benutzernamen auswählen. | * Weisen Sie sich dem Issue zu, indem Sie auf das Zahnrad neben dem Schriftzug ''Zuständig'' klicken, und ihren Benutzernamen auswählen. | ||
Weisen Sie so alle Tasks die sie in den vorhergehenden Aufgaben erstellt haben zu. Weisen Sie sich auch den Issue zu Aufgabe 5 zu, falls dieser schon existierte. | |||
Beachten Sie, dass es nicht nötig für jede Änderung einen Kommentar zu schreiben. Alle Änderungen an Labels und zugewiesenen Personen werden sofort übernommen und in der Historie des Issues eingetragen. | Beachten Sie, dass es nicht nötig für jede Änderung einen Kommentar zu schreiben. Alle Änderungen an Labels und zugewiesenen Personen werden sofort übernommen und in der Historie des Issues eingetragen. | ||
| Zeile 80: | Zeile 81: | ||
*Lesen Sie außerdem den Wikipedia-Artikel zu [http://de.wikipedia.org/wiki/User_Story User Stories]. | *Lesen Sie außerdem den Wikipedia-Artikel zu [http://de.wikipedia.org/wiki/User_Story User Stories]. | ||
* Machen Sie sich mit den anderen Funktionen von [[Gitea]] vertraut und lesen Sie den Artikel [[Ablauf|Scrum im Sopra]] | * Machen Sie sich mit den anderen Funktionen von [[Gitea]] vertraut und lesen Sie den Artikel [[Ablauf|Scrum im Sopra]] | ||
*Sollte es Fragen zum Vorgehen (Scrum und Gitea) geben, schreiben Sie diese als Kommentar in ihr Issue in Gitea, damit eventuelle Fragen schnell geklärt werden können (Kommentarfeld unter <code>Issues -> Meilensteine -> Sprint 00 (Hausaufgabe) -> Scrum, Gitea und Git verstehen</code>). | *Sollte es Fragen zum Vorgehen (Scrum und Gitea) geben, schreiben Sie diese als Kommentar in ihr Issue in Gitea, damit eventuelle Fragen schnell geklärt werden können (Kommentarfeld unter <code>Issues -> Meilensteine -> Sprint 00 (Hausaufgabe) -> Scrum, Gitea und Git verstehen</code>; vergessne Sie nicht ihren Tutor und/oder die Dozenten per <code>@</code> zu erwähnen, damit diese die Frage auch sehen). | ||
*Lesen sie die Artikel [[GIT|Git]] und [[GitWorkflow| Git Workflow]] | *Lesen sie die Artikel [[GIT|Git]] und [[GitWorkflow| Git Workflow]] | ||
**Richten Sie sich den Zugang zu ihrem Gruppenrepository ein, indem Sie in [[Gitea]] ein [[Gitea#HTTPS Kennwort einrichten|HTTPS Kennwort einrichten]] oder einen [[Gitea#SSH Key hinzufügen|SSH Key hinzufügen]]. | **Richten Sie sich den Zugang zu ihrem Gruppenrepository ein, indem Sie in [[Gitea]] ein [[Gitea#HTTPS Kennwort einrichten|HTTPS Kennwort einrichten]] oder einen [[Gitea#SSH Key hinzufügen|SSH Key hinzufügen]]. | ||
**[[Git#Repository klonen|Klonen]] sie das Gruppenrepository. | **[[Git#Repository klonen|Klonen]] sie das Gruppenrepository. | ||
**Öffnen Sie dort die Datei <code>README.md</code> und fügen Sie ihren Namen an der dafür vorgesehenen Stelle hinzu (Verwenden Sie hierfür | **Öffnen Sie dort die Datei <code>README.md</code> und fügen Sie ihren Namen an der dafür vorgesehenen Stelle hinzu (Verwenden Sie hierfür '''nicht''' den Editor in Gitea, sondern eine lokale Kopie des Repositories wie in dieser Aufgabe beschrieben). | ||
**[[Git#Änderungen an einer Datei| Committen]] sie ihre Änderungen: Benutzen sie die Commitnachricht <code>Added name to README.md (closes #<issue-nummer>)</code> um das entsprechende Issue in Gitea [[Git#Git und Gitea | per Commitnachricht zu schließen]]. | **[[Git#Änderungen an einer Datei| Committen]] sie ihre Änderungen: Benutzen sie die Commitnachricht <code>Added name to README.md (closes #<issue-nummer>)</code> um das entsprechende Issue in Gitea [[Git#Git und Gitea | per Commitnachricht zu schließen]]. | ||
**[[Git#Änderungen in das remote Repository laden (pushen)| Synchronisieren]] sie ihre Änderungen mit dem Server. Halten Sie sich dabei and [[GitWorkflow#Tägliche Arbeit Synchronisieren| den empfohlenen Git-Workflow]]. Es it gut möglich, dass durch den Commit konflikte entstehen: Beachten sie hierzu [[Git#Konflikte lösen| die Anleitung zum Konflikte lösen in Git]], und lösen Sie die entstehenden Konflikte sinvoll auf. | **[[Git#Änderungen in das remote Repository laden (pushen)| Synchronisieren]] sie ihre Änderungen mit dem Server. Halten Sie sich dabei and [[GitWorkflow#Tägliche Arbeit Synchronisieren| den empfohlenen Git-Workflow]]. Es it gut möglich, dass durch den Commit konflikte entstehen: Beachten sie hierzu [[Git#Konflikte lösen| die Anleitung zum Konflikte lösen in Git]], und lösen Sie die entstehenden Konflikte sinvoll auf. | ||
* | *Passen Sie falls nötig die <code>.gitignore</code>-Datei in Ihrem Repository an ([[Git#Dateien Ignorieren]]), sodass temporäre Dateien Ihrer IDE und Ihres Betriebssystems, sowie Verzeichnisse für den Compileroutput von Git ignoriert werden. Comitten Sie diese Datei und pushen Sie diese ebenfalls. | ||
*Wenn Sie mit der Aufgabe fertig sind tragen Sie die Zeit, die sie für die Bearbeitung benötigt haben, unter Zeiterfassung ein und schließen sie das Issue. | |||
'''Hinweis''': Achten Sie darauf, dass die in ihrem [[Git]] eingestellte Emailadresse mit der in Gitea eingestellten Emailadesse übereinstimmt, da Ihnen sonst keine Commits zugeordnet werden können. | '''Hinweis''': Achten Sie darauf, dass die in ihrem [[Git]] eingestellte Emailadresse mit der in Gitea eingestellten Emailadesse übereinstimmt, da Ihnen sonst keine Commits zugeordnet werden können (siehe [[Formalien]]). | ||
'''Hinweis:''' Prüfen sie ihre Änderungen bevor sie diese per push mit dem server synchronisieren: prüfen Sie ob sie ausversehen ungewollte Dateien in den Commit aufgenommen haben und ob die Commitnachricht auch dem Inhalt entspricht. Sollten Sie im Verlauf des Projekts Codedateien mergen, prüfen Sie immer, ob das Programm nach dem Merge noch kompiliert/funktioniert. | |||
==Aufgabe 4: Texte lesen== | ==Aufgabe 4: Texte lesen== | ||
| Zeile 100: | Zeile 104: | ||
===Issues bearbeiten=== | ===Issues bearbeiten=== | ||
Bearbeiten sie die Aufgaben und tragen Sie entsprechende Zeiten in die Issues in Gitea ein (im Menü rechts, <code>Zeiterfassung starten</code>). Besonders bei Programmieraufgaben ist dies sinnvoll, da so eine Historie der Bearbeitung und der verbrauchten Zeit erstellt wird. Dies hilft nicht nur Ihnen bei der Planung weiterer Aufgaben und Abschätzung der dafür benötigten Zeit, sondern dient auch als Nachweis für Ihre kontinuierliche Mitarbeit (siehe [[Formalien]]). | Bearbeiten sie die Aufgaben und tragen Sie entsprechende Zeiten in die Issues in Gitea ein (im Menü rechts, <code>Zeiterfassung -> Timer starten</code>). Besonders bei Programmieraufgaben ist dies sinnvoll, da so eine Historie der Bearbeitung und der verbrauchten Zeit erstellt wird. Dies hilft nicht nur Ihnen bei der Planung weiterer Aufgaben und Abschätzung der dafür benötigten Zeit, sondern dient auch als Nachweis für Ihre kontinuierliche Mitarbeit (siehe [[Formalien]]). | ||
===Issues schließen=== | ===Issues schließen=== | ||
| Zeile 118: | Zeile 122: | ||
**Das Logo muss korrekt skaliert sein, damit es vollständig in den sichtbaren Bereich hinein passt. | **Das Logo muss korrekt skaliert sein, damit es vollständig in den sichtbaren Bereich hinein passt. | ||
**Das Logo darf während der Bewegung nicht über die Ränder des sichtbaren Bereiches hinausragen. (Größenveränderung des Fensters ist zu vernachlässigen. Es gilt die Größe des Fensters bei Programmaufruf.) | **Das Logo darf während der Bewegung nicht über die Ränder des sichtbaren Bereiches hinausragen. (Größenveränderung des Fensters ist zu vernachlässigen. Es gilt die Größe des Fensters bei Programmaufruf.) | ||
*Innerhalb des [[MonoGame]]-Fensters wird ein Maus-Cursor angezeigt | *Innerhalb des [[MonoGame]]-Fensters wird ein Maus-Cursor angezeigt. | ||
* Wenn der Benutzer mit der Maus innerhalb des Fensters klickt, soll ein Sound abhängig von der Position des Cursors abgespielt werden: | * Wenn der Benutzer mit der Maus innerhalb des Fensters klickt, soll ein Sound abhängig von der Position des Cursors abgespielt werden: | ||
**Befindet sich der Cursor über dem Logo, soll ein Ton A erklingen. | **Befindet sich der Cursor über dem Logo, soll ein Ton A erklingen. | ||
| Zeile 136: | Zeile 140: | ||
===Abgabe=== | ===Abgabe=== | ||
Bitte verwenden Sie zur finalen [[Abgabe#Hausaufgabe|Abgabe]] der Hausaufgabe das [[GIT|Git]]-Repository ihrer Gruppe. Der Programmier-Teil der Hausaufgabe muss | Bitte verwenden Sie zur finalen [[Abgabe#Hausaufgabe|Abgabe]] der Hausaufgabe das [[GIT|Git]]-Repository ihrer Gruppe. Der Programmier-Teil der Hausaufgabe muss der komplette Projektordner (ab dem Verzeichnis, das die Projektdatei <code>*.sln</code> enthält) abgegeben werden. Sie sollten dazu einfach das Projekt in das Gruppenrepository unter <code>/abgabe/hausaufgabe/<username>/</code> comitten. | ||
Bitte vergewissern Sie sich vorher noch einmal, ob eine entsprechende [[Git#Dateien Ignorieren|.gitignore Datei]] angelegt ist, damit auschließlich relevante Projektdateien (z.B.: die Solution und Codedateien) aber keine temporären Dateien im Repository eingecheckt werden. | Bitte vergewissern Sie sich vorher noch einmal, ob eine entsprechende [[Git#Dateien Ignorieren|.gitignore Datei]] angelegt ist, damit auschließlich relevante Projektdateien (z.B.: die Solution und Codedateien) aber keine temporären Dateien im Repository eingecheckt werden. | ||
| Zeile 142: | Zeile 146: | ||
==Aufgabe 6: Abgabe finalisieren== | ==Aufgabe 6: Abgabe finalisieren== | ||
Wenn Sie in Ihrer Gruppe die Aufgaben als letztes abschließen (d.h. Sie | Wenn Sie in Ihrer Gruppe die Aufgaben als letztes abschließen (d.h. Sie den letzten Issue im Sprintbacklog schließen) fällt Ihnen die Aufgabe zu, den Sprit für Ihre Gruppe abzuschießen ([[GitWorkflow#Sprint Abschließen|vgl. Sprint Abschließen]]): | ||
| Zeile 148: | Zeile 152: | ||
Der Fortschritt der während des Sprints erzielt wurde (Inkrement) muss auf den <code>release</code> branch übertragen werden, damit trotz weiterer Arbeit immer eine auslieferbare Version verfügbar ist. In den auf die Hausaufgabe folgenden Sprints gehört dies zu den aufgaben des Product owners. | Der Fortschritt der während des Sprints erzielt wurde (Inkrement) muss auf den <code>release</code> branch übertragen werden, damit trotz weiterer Arbeit immer eine auslieferbare Version verfügbar ist. In den auf die Hausaufgabe folgenden Sprints gehört dies zu den aufgaben des Product owners. | ||
*Schließen Sie das Sprintbacklog (<code>Issues -> Meilensteine -> Sprint 00 (Hausaufgabe) -> Schießen</code>). | *Schließen Sie das Sprintbacklog (<code>Issues -> Meilensteine -> Sprint 00 (Hausaufgabe) -> Schießen</code>). | ||
*Erstellen sie einen [[Gitea#Pullrequest|Pullrequest]] (siehe Abb. 8), sodass der aktuelle Stand von <code> | *Erstellen sie einen [[Gitea#Pullrequest|Pullrequest]] (siehe Abb. 8), sodass der aktuelle Stand von <code>main</code> nach <code>release</code> übertragen werden kann. Gehen Sie wie folgt vor: | ||
**Klicken Sie in Gitea auf den Reiter <code>Code -> Branch: | **Klicken Sie in Gitea auf den Reiter <code>Code -> Branch: main</code>. | ||
**Drücken Sie auf den Button <code>Neuer Pull-Request</code>. | **Drücken Sie auf den Button <code>Neuer Pull-Request</code>. | ||
**Prüfen Sie im folgenden Dialog, dass als Ziel <code>release</code> und als pullen von <code> | **Prüfen Sie im folgenden Dialog, dass als Ziel <code>release</code> und als pullen von <code>main</code> gewählt sind. Geben Sie dem Pullrequest den Titel ''Hausaufgabe''. Ihnen werden daraufhin alle Änderungen die mit dem Pull-Request vom <code>main</code> auf den <code>release</code> -Branch übertragen werden sollen angezeigt. | ||
**Drücken Sie auf <code>Pullrequest Erstellen</code>. | **Drücken Sie auf <code>Pullrequest Erstellen</code>. | ||
**Gitea wird feststellen, dass es zwischen <code> | **Gitea wird feststellen, dass es zwischen <code>main</code> und <code>release</code> keine Konflikte gibt, und der Merge automatisch durchgeführt werden kann. Ein weiteres Drücken auf <code>Pull-Request Zusammenführen</code> öffnet ein Kommentarfenster, noch einmal drücken schließt den Pull-Request ab. | ||
Die Änderungen die Sie und ihre Gruppe während des Hausaufgabensprints gemacht haben, befinden sich nun auch auf dem <code>release</code>-Branch. | Die Änderungen die Sie und ihre Gruppe während des Hausaufgabensprints gemacht haben, befinden sich nun auch auf dem <code>release</code>-Branch. | ||
