Hausaufgabe: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 14: Zeile 14:
Sie finden die relevanten Download-Links unter [[Downloads]].
Sie finden die relevanten Download-Links unter [[Downloads]].
* [[.NET]] 4.6.1
* [[.NET]] 4.6.1
* [[Visual Studio]] 2015 Enterprise (Visual Studio 2017 wird aktuell noch nicht vom MonoGame Installer unterstützt)
* [[Visual Studio]] 2015 Enterprise
* [[MonoGame]] 3.6
* [[MonoGame]] 3.6
* [[Resharper]] (beachten Sie die [[Resharper#Konfiguration|Hinweise zur Konfiguration]])
* [[Resharper]] (beachten Sie die [[Resharper#Konfiguration|Hinweise zur Konfiguration]])
* Ein [[Subversion|SVN]]-Client ihrer Wahl
* Ein [[GIT|GIT]]-Client ihrer Wahl
* Wenn Sie auf einem der Poolrechner entwickeln möchten, beachten Sie die Installationshinweise für Poolrechner auf der [[Downloads#Installation_im_Pool|Downloads-Seite]].
* Wenn Sie auf einem der Poolrechner entwickeln möchten, beachten Sie die Installationshinweise für Poolrechner auf der [[Downloads#Installation_im_Pool|Downloads-Seite]].


=== Dienste ===
=== Dienste ===
Um auf die Dienste zugreifen zu können, brauchen Sie einen gültigen Poolaccount.<!--Außerdem müssen Sie für die Dienste ein sog. [https://support.informatik.uni-freiburg.de/cgi/support/fawmgr.cgi?wpassword:de WWW-Passwort einrichten].-->
Um auf die Dienste zugreifen zu können, brauchen Sie einen gültigen Poolaccount.


Die folgenden Dienste sollten Sie getestet haben:  
Die folgenden Dienste sollten Sie getestet haben:  
Zeile 27: Zeile 27:
* Zugang zum Trac ihrer Gruppe
* Zugang zum Trac ihrer Gruppe
* Die Gruppenmailingliste
* Die Gruppenmailingliste
* TODO


Die Adressen dieser Dienste finden sich auf der [[Gruppeneinteilung]]sseite.
Die Adressen dieser Dienste finden sich auf der [[Gruppeneinteilung]]sseite.


<!--Erstellen Sie außerdem einen Account für das [https://sopra.informatik.uni-freiburg.de/sopraboard Sopra-Forum].-->
== Aufgabe 2: Gitea ==
Bereiten Sie ihr Gitea auf den Hausaufgabensprint und die Aufgaben ihrer Gruppe vor. Gehen Sie dazu wie folgt vor.


== Aufgabe 2: Trac ==
=== Gitea vorbereiten ===
Erstellen Sie für die Bearbeitung der [[# Aufgabe 3: Scrum und Trac verstehen|Aufgabe 3]] Tasks im Trac Ihrer Gruppe. Gehen Sie dazu wie folgt vor.  
Um Gitea in Verbindung mit Scrumm verwenden zu können, müssen vorher bestimmte Labels für die Items im Backlog (Issuetracker) eingerichtet werden.
 
{{RefImg|gitea_setuptags.png|600px|2|Auswahl der vorkonfigurierten Labels.}}
=== Product und Sprint Backlog für "Hausaufgabe" anlegen ===
* Klicken Sie auf ''Issues''.
 
* Klicken Sie auf ''Labels''.
{{RefImg|trac_product_backlog.png|600px|1|Administrationsmenü für Product Backlog.}}
* Wenn noch keine Labels eingerichtet wurden, werden Sie gefragt ob eines der vorkonfigurierten Menge von Labels verwendet werden solln. Wählen Sie hier das vorkonfigurierte Set ''Sopra''.  
Prüfen Sie, ob in Ihrem Trac bereits ein Backlog "''Product Backlog''" und ein Backlog "''Sprint Backlog''" angelegt wurde. Falls nein, legen Sie diese folgendermaßen an:
* Klicken Sie in der oberen Navigationsleiste auf "Admin".
* Klicken Sie in der linken Leiste auf "Backlogs".
* Geben Sie auf der rechten Seite den Namen "Product Backlog" ein und klicken Sie auf "Add and edit".
* Wählen Sie auf der nächsten Seite den Scope "''global''" und "''Include Planned Tickets''", sowie die Ticket Types "Requirement" und "User Story" aus und speichern Sie die aktuellen Einstellungen.
* Rufen Sie das Product Backlog erneut auf, indem Sie auf den Namen klicken. Stellen Sie unter "Column Preferences" folgende Eigenschaften ein (siehe auch {{LinkImg|1|Abbildung 1}}):
** "Importance", Order=0
** "Milestone", Order=3
** "Sprint", Order=2
** "Story Points", Order=1
** Geben Sie bei der Eigenschaft "Story Points" zusätzlich die Alternative "Total Story Points" an.
* Legen Sie ein neues Sprint Backlog, "Sprint Backlog", an, genauso, wie Sie das Product Backlog angelegt haben. Wählen Sie als Scope "''sprint''" aus und setzen Sie den Haken bei "''Include Planned Tickets''". Wählen Sie alle Ticket Types aus. Speichern Sie das Backlog.
* Rufen Sie das eben angelegte Sprint Backlog erneut auf und stellen Sie unter "Column Preferences" folgende Eigenschaften ein:
** "Importance", Order=3
** "Owner", Order=0
** "Priority", Order=4
** "Remaining Time", Order=1
** "Spent Time", Order=2
** "Status", Order=5
** Geben Sie bei "Remaining Time" als Alternative "Total Remaining Time" an.
** Geben Sie bei "Spent Time" als Alternative "Total Spent Time" an.
** Stellen Sie sicher, dass sowohl bei "Remaining Time" als auch bei "Spent Time" das Kästchen "Show?" angehakt ist.
<br clear="all">
 
=== Milestone für Hausaufgabe anlegen ===
{{RefImg|trac_new_milestone.png|600px|2|Das Formular für die Erstellung eines neuen Milestones.}}
Prüfen Sie, ob in Ihrem Trac bereits ein Milestone für die Hausaufgabe angelegt ist:
* Klicken Sie in der oberen Navigationsleiste auf "Admin".
* Klicken Sie in der linken Leiste auf "Milestones".
* Falls noch kein Milestone für die Hausaufgabe angelegt ist, legen Sie diesen an. Verwenden Sie das Datum der Abgabe (siehe [[Roadmap]], Datumsformat beachten!).
<br clear="all">


=== Sprint für Hausaufgabe anlegen ===
=== Sprint für Hausaufgabe anlegen ===
{{RefImg|trac_new_sprint.png|600px|3|Das Formular zum Anlegen eines neuen Sprints.}}
{{RefImg|gitea_firstsprintmilestone.png|600px|2|Das Formular für die Erstellung eines neuen Milestones.}}
Prüfen Sie, ob in Ihrem Trac bereits ein Sprint für die Hausaufgabe angelegt wurde (Admin -> Sprints). Falls nein, legen Sie diesen folgendermaßen an:
Prüfen sie ob in Gitea ein Sprint (Milestone) für die Hausaufgabe angelegt wurde.
* Klicken Sie in der oberen Navigationsleiste auf "Admin".
* Klicken Sie auf den Reiter ''Issues''.
* Klicken Sie in der linken Leiste auf "Sprints".
* Klicken Sie auf den Button ''Milestones''
* Fügen Sie einen neuen Sprint mit Namen "Sprint Hausaufgabe", Milestone "Hausaufgabe", Start Date <heute> und End Date <Abgabezeitpunkt> hinzu. Beachten Sie dabei das Datumsformat.
* Falls noch keinen Sprint (Milestone) für die Hausaufgabe angelegt wurde, legen sie diesen an. Verwenden Sie das Datum für das Ende des Sprints die Abgabe auf der [[Roadmap]].
* Beachten Sie, dass Trac anzeigt, dass der Sprint am folgenden Montag endet, falls Sie einen Tag an einem Wochenende als Endzeitpunkt angegeben haben. Das liegt daran, dass in Arbeitstagen (Montag-Freitag) gerechnet wird. Der verbindliche Abgabezeitpunkt der Hausaufgabe ist in der [[Roadmap]] angegeben.
<br clear="all">
<br clear="all">


=== Requirement für die Hausaufgabe anlegen ===
=== Userstory für die Hausaufgabe anlegen ===
{{RefImg|trac_new_requirement.png|600px|4|Neues Requirement anlegen.}}
{{RefImg|gitea_firstuserstory.png|600px|4|Neue Userstory anlegen.}}
Prüfen Sie, ob in Ihrem Trac bereits das Requirement "Hausaufgaben machen" im Product Backlog angelegt ist. Falls nein, legen Sie dieses an.
Prüfen Sie ob für die Hausaufgabe bereits alle Userstories existieren. Wenn nicht, legen Sie diese an.  
* Klicken Sie am linken Rand auf "Product Backlog" und überprüfen Sie eventuell vorhandene Requirements.
* Klicken Sie auf den Reiter ''Issues''.
* Klicken Sie auf der linken Seite unter Actions auf "New Requirement".
* Prüfen Sie ob bereits ein Item ''Alle Studenten in der Gruppe sollen Git und Gitea bedienen können, damit sie in Zukunft produktiver arbeiten.'' existiert und mit ''user story'' getaggt ist. Wennicht legen Sie eine entsprechende Userstory an indem Sie den weiteren Punkte folgen.  
* Nennen Sie das neue Requirement "Hausaufgaben machen", weisen Sie dem Requirement den Milestone "Hausaufgabe" zu und speichern Sie es ab.
* Klicken Sie auf den Button ''Neuer Issue''.
<br clear="all">
* Tragen sie als Titel ''Alle Studenten in der Gruppe sollen Git und Gitea bedienen können, damit sie in Zukunft produktiver arbeiten.'' ein.
 
* Weisen Sie die Label ''user story'' und ''priority: high'' zu, indem Sie auf das Zahnrad neben dem Schrifzug ''Label'' drücken und die entsprechenden Label auswählen.
=== User Story anlegen ===
* Weisen Sie den Sprint (Meilenstein) ''Hausaufgabe'' zu.
{{RefImg|trac_reference_user_story.png|600px|5|Einem Requirement eine Referenz zu einer User Story hinzufügen.}}
* Dürcken sie auf ''Issue Erstellen''.
{{RefImg|trac_new_user_story.png|600px|6|Neue User Story anlegen.}}
* Fügen Sie außerdem noch die beiden User Stories ''Alle Studenten in der Gruppe sollen das soll die Texte verstehen, damit sie besser Spiele entwickeln können.'' und ''Alle Studenten in der Gruppe sollen soll ein MonoGame Programm schreiben um zu prüfen ob alles funktioniert.'' auf dieselbe Art hinzu.
Legen Sie eine neue User Story für das Requirement "Hausaufgabe machen" an.
* Klicken Sie am linken Rand auf das Product Backlog.
* Wählen Sie das Requirement "Hausaufgabe machen" aus, indem Sie auf seine ID klicken.
* Klicken Sie auf der nächsten Seite unter dem Reiter "Edit" auf "Create a new referenced 'User Story'".
* Nennen Sie die User Story "Student <username> soll das Trac bedienen können, damit er in Zukunft produktiver arbeitet".
* Geben Sie den Sprint "Sprint Hausaufgabe" an und legen Sie die Importance auf "Mandatory" fest. Geben Sie außerdem Ihren Benutzernamen im Feld "Owner" an und erstellen Sie dann die neue User Story.
* Fügen Sie außerdem noch die beiden User Stories "Student <username> soll die Texte verstehen, damit er besser Spiele entwickeln kann" und "Student <username> soll ein MonoGame Programm schreiben, damit er früh merkt, ob irgendetwas nicht funktioniert" auf dieselbe Art zum Requirement "Hausaufgabe machen" hinzu.
<br clear="all">
<br clear="all">


=== Tasks für Aufgabe 3 erstellen ===
=== Tasks für Aufgabe 3 erstellen ===
{{RefImg|trac_user_story_new_task.png|600px|7|Neuen Task zur User Story hinzufügen.}}
Legen Sie nun einen Task "Student <username> soll 'Scrum' verstehen" an.
{{RefImg|trac_new_task.png|600px|8|Neuen Task anlegen.}}
* Klicken Sie auf den Reiter ''Issues''.
Legen Sie nun einen Task in der User Story "Student <username> soll das Trac bedienen können, damit er in Zukunft produktiver arbeitet" an, der bearbeitet werden soll.
* Klicken Sie auf den Button ''Neuer Issue''.
* Klicken Sie am linken Rand auf das Product Backlog.
* Tragen Sie als Titel ''Student <username> soll Scrum verstehen'' ein.
* Klicken Sie auf die ID der User Story.
* Weisen Sie das Label ''priority: high'' zu.
* Klicken Sie im oberen Bereich auf "Edit".
* Weisen Sie den Sprint (Meilenstein) ''Hausaufgabe'' zu.  
* Klicken Sie in der Kategorie "References" auf "Create a new referenced 'Task'".
* Speichern Sie den Task ab, indem sie ''Issue Erstellen'' dürcken.
* Geben Sie den Tasknamen "Scrum verstehen" an.
* Geben sie im Feld "Remaining Time" die Zeit in Stunden an, die sie Ihrer Einschätzung nach für die Fertigstellung des Tasks benötigen.
* Speichern Sie den Task ab.
* Legen Sie außerdem den Task "Trac verstehen" für dieselbe User Story auf dieselbe Weise an.
<br clear="all">
<br clear="all">


=== Tasks für Aufgabe 4 erstellen ===
=== Tasks für Aufgabe 4 erstellen ===
Erstellen Sie die Tasks für Aufgabe 4 unter User Story "Student <username> soll die Texte verstehen, damit er besser Spiele entwickeln kann" auf dieselbe Weise wie für Aufgabe 3:
Erstellen Sie auf dieselbe Weise die Tasks für Aufgabe 4:
* "'Clean Code Development' Artikel lesen"
* 'Clean Code Development' Artikel lesen
* "'Dokumentation' Artikel lesen"
* 'Dokumentation' Artikel lesen
* "'Usability-Prinzipien beim Spieldesign' Artikel lesen"
* 'Usability-Prinzipien beim Spieldesign' Artikel lesen
* "'Trac und SVN' Artikel lesen"
* 'Git' Artikel lesen  
<br clear="all">
<br clear="all">


=== Tasks für Aufgabe 5 erstellen ===
=== Tasks für Aufgabe 5 erstellen ===
Erstellen Sie einen Task für Aufgabe 5, z.B. "Programm schreiben", auf dieselbe Weise wie für Aufgaben 3 und 4 für User Story "Student <username> soll ein MonoGame Programm schreiben, damit er früh merkt, ob irgendetwas nicht funktioniert".
Erstellen Sie einen Task für Aufgabe 5, z.B. "Programm schreiben", auf dieselbe Weise wie für Aufgaben 3 und 4.
<br clear="all">
 
=== Überprüfen der Tasks und Custom Query erstellen ===
{{RefImg|trac_view_tickets_custom_query_marked.png|600px|9|In der Ansicht "View Tickets" kann eine Custom Query erstellt werden.}}
{{RefImg|trac_create_custom_query.png|600px|10|Ein Custom Query kann verschiedene Filter besitzen, die die Menge der anzuzeigenden Tickets und Tasks einschränkt. Außerdem kann eingestellt werden, welche Informationen eines Tickets in der Ausgabeliste angezeigt werden und wie diese gruppiert werden können. Das Query kann auch mit "Save query" unter einem Namen gespeichert werden, sodass es in der "View Tickets"-Liste wieder auftaucht.}}
{{RefImg|trac_final_custom_query.png|600px|11|Ergebnis der vorher erstellten Custom Query, die alle aktiven Tickets für den Benutzer "greitsch" anzeigt.}}
Überprüfen Sie, ob Ihre Tasks richtig erstellt wurden, indem Sie sich das Product Backlog und das Sprint Backlog ansehen. Legen Sie außerdem ein neues Custom Query an.
Ein Custom Query ist eine von Ihnen konfigurierte Ansicht, die Tickets und Tasks mit ihren Attributen filtert. Um eine geeignete Ansicht für Ihre Tickets oder Tasks zu erstellen, gehen Sie wie folgt vor:
* Klicken Sie in der oberen Navigationsleiste auf "View Tickets".
* Klicken Sie in der folgenden Ansicht oben rechts auf den Link "Custom Query".
* Konfigurieren Sie sich eine geeignete Ansicht, z.B. so wie in {{LinkImg|10|Abbildung 10}} dargestellt.
* Klicken Sie auf "Update" um festzustellen, ob das Query richtig funktioniert.
* Klicken Sie auf "Save query" um das Query unter einem geeigneten Namen abzuspeichern. Sie können sie später jederzeit wieder löschen.
* Das neu erstellte Custom Query ist nun außerdem am linken Rand in der Kategorie "Tickets" zu finden.
 
Es gibt noch viele andere Arten, Ihre Ticketabfragen zu personalisieren. Für weiterführende Informationen können Sie die Trac-Dokumentationsseiten [http://trac.edgewall.org/wiki/TracReports TracReports] und [http://trac.edgewall.org/wiki/TracQuery TracQuery] besuchen.
<br clear="all">
<br clear="all">


=== Tasks akzeptieren ===
=== Tasks akzeptieren ===
{{RefImg|trac_resolve_ticket.png|600px|12|Detailansicht eines Tasks.}}
<!-- {{RefImg|trac_resolve_ticket.png|600px|12|Detailansicht eines Tasks.}} -->
Bevor Sie mit den Aufgaben beginnen, sollten Sie Ihren entsprechenden Tasks akzeptieren.  
Bevor Sie mit den Aufgaben beginnen, sollten Sie Ihren entsprechenden Tasks akzeptieren.  
* Wählen Sie auf der linken Seite den Sprint "Sprint Hausaufgabe" aus und klicken Sie auf "View".
* Wählen Sie einen Taks aus dem Productbacklog (Issues) aus, indem Sie auf den Titel des Tasks klicken.
* Öffnen Sie die Tasks Ihrer User Stories, indem Sie auf die entsprechenden IDs klicken.
* Weisen Sie das Lebel ''estimate: 1'' zu um eine abgeschätzte Arbeitszeit von einer Stunde anzugeben.
* Wählen Sie im Reiter "Edit" in der Kategorie "Action" die Auswahlmöglichkeit "accept Next status will be 'accepted'" aus und klicken Sie auf "Submit changes".
* Weisen Sie den Sprint (Meilenstein) ''Hausaufgabe'' zu.  
* Weisen Sie sich dem Taks zu, indem Sie auf das Zahnrad neben dem Schriftzug ''Zuständig'' klicken, und ihren Benutzernamen auswählen.  
Die Änderungen werden sofort nach der Änderung gespeichert. Es ist nicht nötig einen Kommentar zu schreiben.
<br clear="all">
<br clear="all">


=== Aussehen ===
=== Überprüfen der Tasks ===
{{RefImg|trac_ticket_view.png|600px|13|Die angelegten Tasks in Trac.}}
{{RefImg|gitea_hausaufgabe_tasks.png|600px|13|Tasks und Userstories für die Hausaufgabe.}}
Wenn Sie alle Schritte durchgeführt haben, sollte das Sprint Backlog für den Sprint "Sprint Hausaufgabe" in etwa so aussehen, wie in {{LinkImg|13|Abbildung 13}}.
Bevor Sie beginnen sich Tickets zuzuweisen und mit der Arbeit zu beginnen, prüfen Sie noch einmal ob alle Tasks und Userstories im Sprintbacklog vorhanden sind.
<br clear="all">
* Klicken sie auf den Reiter ''Issues''.
* Klicken sie den Button ''Meilensteine''.
* Klicken sie auf den Meilenstein ''Hausaufgabe''.
* Schränken Sie die Anzeige auf Userstories ein, indem sie in dem Sie den Button ''Label ''⯆ drücken und das Label ''user story'' auswählen. Prüfen Sie ob alle Userstories vorhanden sind.
* Schränken Sie die Anzeige auf ihnen Zugewiesene Tasks ein, indem sie unter ''Label ''⯆ ''alle Labels'' wählen, und unter ''Zuständig ''⯆ ihren Usernamen. Prüfen Sie ob alle Tasks vorhanden sind.
* Erstellen Sie eventuell nicht vorhandene Userstories und Tasks wie in den vorhergehenden Aufgaben beschrieben.


{{Warning|Es kann vorkommen, dass Änderungen, die man an Trac Tasks vornimmt, nicht übernommen werden. Das passiert, weil Trac den Typ des Ticket auf "defect" setzt. Damit die Änderungen beim Bearbeiten übernommen werden, muss der Typ des Tasks wieder auf "Task" gesetzt werden.}}


== Aufgabe 3: Scrum und Trac verstehen ==
== Aufgabe 3: Scrum und Gitea verstehen ==


* Recherchieren Sie, was [[Scrum]] ist und wie Scrum funktioniert.
* Recherchieren Sie, was [[Scrum]] ist und wie Scrum funktioniert.
* 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 des Tracs vertraut
* Machen Sie sich mit den anderen Funktionen von Gitea vertraut und lesen Sie den Artikel [[Scrumm und Gitea]]
** Schauen Sie sich die verschiedenen Bereiche des Admin-Interfaces an und lesen Sie ggf. die Dokumentation (Links zur Dokumentation befinden sich auf jeder Trac-Seite). 
* Beschreiben Sie in einem Kommentar zu Task "Student <username> soll 'Scrum' verstehen" kurz und prägnant wie Scrum funktioniert.
** Schauen Sie außerdem die verschiedenen Ansichten, die Sie über die Navigationsleiste am oberen Rand erreichen (Home, Timeline, Roadmap, ...) an. 
** '''Hinweis''': Sie können nichts kaputt machen, außer wenn Sie Ihren Teamkollegen oder sich selbst unter "Administration->Permissions" die Rechte entziehen. Machen Sie das also nicht.
** Beachten Sie außerdem, dass optische Änderungen am Trac (z.B. Ändern der Spaltensortierung und -reihenfolge oder das Ausblenden der linken Seitenleiste über Klick auf den Trenner) für alle Gruppenmitglieder und nicht nur für Sie sichtbar sind.
* Beschreiben Sie in der User Story "Student <username> soll das Trac bedienen können, damit er in Zukunft produktiver arbeitet" kurz, wie Scrum mit unserem Trac zusammenhängt. Verwenden Sie dazu den Kommentar des jeweiligen Tickets.
 
{{BA|Greitschus|User Stories müssen auch geschlossen werden! Das fehlt noch in den Beschreibungen!}}
{{BA|Langenfeld|Die Formulierung ''des jeweiligen Tickets'' ist mehrdeutig das die Userstory auch ein Ticket ist. Besser wäre ''im jeweiligen Task'' (d.h. SS17 ist beides möglich)}}
{{BA|Robin|In den Korrekturhinweisen steht: "Userstories müssen nicht geschlossen werden"}}


== Aufgabe 4: Texte lesen ==  
== Aufgabe 4: Texte lesen ==  
Lesen Sie sich die folgenden Artikel durch:  
Lesen Sie sich die folgenden Artikel durch, und kommentieren Sie ihr entsprechendes Ticket:
* [[CleanCode|Clean Code Development]]
* [[CleanCode|Clean Code Development]] und beschreiben sie __ein__ Cleancodeprinzip (dass sonst noch keiner aus Ihrer Gruppe gewählt hat) kurz und prägnant.
* [[Dokumentation]]
* [[Dokumentation]]
* [[UsabilityForGames|Usability-Prinzipien beim Spieldesign]]
* [[UsabilityForGames|Usability-Prinzipien beim Spieldesign]] und beschreiben Sie eine Verletzung der Usability-Prinzipien in einem Spiel (oder anderer Software).
* [[SVN#Trac_und_SVN|Trac und SVN]]
* [[GIT#Gitea|Gitea und Git]] clonen Sie ihr Gruppenrepository. Verändern sie etwas in der Readme.md. Schließen Sie ihr Ticket für diese Aufgabe über die Commitmessage, und pushen sie den Commit.
 
Sollten Sie Fragen zu diesen Artikeln haben, wenden Sie sich an Ihren Tutor.
<br clear="all">
<br clear="all">


=== Tasks bearbeiten ===
=== Tasks bearbeiten ===
Aktualisieren Sie die Ihrer Einschätzung nach noch verbleibende Zeit und die bereits benötigte Zeit für einen Task, während Sie daran arbeiten. 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 Tasks und tragen sie entsprechende Zeiten in den Tickets ein. 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]]).


'''Achtung''': Geben Sie im Feld "Spent Time" jeweils immer die '''Gesamtsumme''' der verbrauchten Stunden an. Das heißt, keine Differenzen zu bereits früher eingetragenen Zeiten. Das bedeutet, die verbrauchte Zeit für ein Task kann pro Bearbeitungsiteration immer nur größer werden oder gleich groß bleiben, kann aber nie kleiner werden.
'''Achtung''': Geben Sie acht beim Zeit eintragen, da Sie die Summe nachträglich nur nach oben verändern können.


=== Tasks schließen ===
=== Tasks schließen ===
Wenn Sie mit einer Aufgabe fertig sind, sollten Sie Ihren entsprechenden Task schließen. Gehen Sie ähnlich wie beim Akzeptieren eines Tasks vor, aber wählen Sie jetzt im Block "Action" (siehe {{LinkImg|12|Abbildung 12}}) die Option "resolve as fixed" und klicken Sie dann auf "Submit changes".
Wenn Sie mit einer Aufgabe fertig sind, sollten Sie Ihren entsprechenden Task schließen. Gehen Sie ähnlich wie beim Akzeptieren eines Tasks vor und drücken Sie auf den Button ''Schießen''.
 
Alternativ können Sie auch die "Remaining Time" auf 0 setzen. In diesem Fall wird der Task ebenfalls geschlossen.
 
Geben Sie außerdem die Gesamtzeit, die Sie für die Bearbeitung des Tasks gebraucht haben, im Feld "Spent Time" an.


'''Achtung''': Geben Sie im Feld "Spent Time" jeweils immer die '''Gesamtsumme''' der verbrauchten Stunden an. Das heißt, keine Differenzen zu bereits früher eingetragenen Zeiten.
Vergessen Sie nicht die Zeit die Sie für den Task benötigt haben, einzutragen (falls Sie das noch nicht gemacht haben).


== Aufgabe 5: Programm schreiben ==  
== Aufgabe 5: Programm schreiben ==  
Zeile 207: Zeile 142:
** Das Logo muss transparent sein, d.h. es dürfen keine weißen Ränder der verwendeten Grafik sichtbar sein. Außerdem muss durch alle nicht-schwarzen Stellen des Logos hindurchgesehen werden können.
** Das Logo muss transparent sein, d.h. es dürfen keine weißen Ränder der verwendeten Grafik sichtbar sein. Außerdem muss durch alle nicht-schwarzen Stellen des Logos hindurchgesehen werden können.
** 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 als Richtwert 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.)
{{BA|Sabine| Beim letzten Punkt hatten sich die Studenten beschwert, dass man es auch so verstehen könnte, dass das Logo die ganze Zeit halbtransparent sein soll o.ä.}}
{{BA|Greitschus|Habe die anderen Bemerkungen mal gelöscht. Habe das mit der Transparenz ein wenig konkretisiert. Eigentlich können sie auch gerne die Transparenz ändern / das Logo teilweise ein- und ausfaden lassen. Auf jeden Fall soll aber durch die weißen Bereiche durchgesehen werden können. Wenn die Studenten aber mehr machen wollen (auch was die Rotation angeht), find ich das nicht schlimm.}}
* Innerhalb des [[MonoGame]]-Fensters wird ein Maus-Cursor angezeigt.<br />'''Hinweis, falls Sie mit einer virtuellen Maschine arbeiten, in der Windows installiert ist:''' Normalerweise wird der Mauszeiger in MonoGame Fenstern standardmäßig ausgeblendet, wenn man ihn nicht explizit aktiviert. Beim Arbeiten mit einer virtuellen Maschine kann es jedoch sein, dass der Mauszeiger im Fenster immer angezeigt wird. In diesen Fällen wird nicht bemerkt, dass man den Mauszeiger eigentlich hätte anschalten müssen. Um sicher zu stellen, dass die Anforderung erfüllt ist, testen Sie Ihr Programm sicherheitshalber noch einmal an einem der Poolrechner unter Windows, um einen möglichen Punktabzug an dieser Stelle in der Hausaufgabe auszuschließen.
* Innerhalb des [[MonoGame]]-Fensters wird ein Maus-Cursor angezeigt.<br />'''Hinweis, falls Sie mit einer virtuellen Maschine arbeiten, in der Windows installiert ist:''' Normalerweise wird der Mauszeiger in MonoGame Fenstern standardmäßig ausgeblendet, wenn man ihn nicht explizit aktiviert. Beim Arbeiten mit einer virtuellen Maschine kann es jedoch sein, dass der Mauszeiger im Fenster immer angezeigt wird. In diesen Fällen wird nicht bemerkt, dass man den Mauszeiger eigentlich hätte anschalten müssen. Um sicher zu stellen, dass die Anforderung erfüllt ist, testen Sie Ihr Programm sicherheitshalber noch einmal an einem der Poolrechner unter Windows, um einen möglichen Punktabzug an dieser Stelle in der Hausaufgabe auszuschließen.
* 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:
{{BA|Greitschus|Hinzufügen: Innerhalb des Fensters heißt, dass das Fenster **AKTIV** sein muss. Inaktiv ist ein Fenster dann nicht, wenn ein anderes Fenster ausgewählt ist.}}
** Befindet sich der Cursor über dem Logo, soll ein Ton A erklingen.
** Liegt der Cursor über dem Logo, soll ein Ton A erklingen.
** Befindet sich  der Cursor nicht über dem Logo, soll ein Ton B erklingen.
** Liegt der Cursor nicht über dem Logo, soll ein Ton B erklingen.
** Ton A und Ton B müssen verschieden sein.
** Ton A und Ton B müssen verschieden sein.
** Der Ton darf pro Klick nur einmal abgespielt werden.
{{BA|Sabine| Hier könnte man noch hinzunehmen ob der Sound pro Klick nur einmal abgespielt werden soll (also nicht x-mal während des Klicks), falls man das wünscht! Zusätzlich könnte man noch schreiben, dass bei Klick auf die transparenten Ecken des Logo-Bildes der Ton B erklingen soll!}}
{{BA|Greitschus|Das erste find ich gut und hab ich aufgeschrieben. Das zweite mit dem Klick auf transparente Flächen ist für die HA glaube ich zu schwer. Da müsste man die entsprechenden Stellen des Logos identifizieren über irgendwelche Farb-Funktionen. Das halte ich für zu viel. Es reicht, wenn das Logo nicht getroffen wird, dass dann ein anderer Ton kommt.}}


=== Randbedingungen ===
=== Randbedingungen ===
Zeile 245: Zeile 174:
=== Abgabe ===
=== Abgabe ===
Bitte verwenden Sie zur finalen [[Abgabe#Hausaufgabe|Abgabe]] der Hausaufgabe das [[Subversion|SVN]]-Repository ihrer Gruppe: {{:Abgabe/Hausaufgabe}}
Bitte verwenden Sie zur finalen [[Abgabe#Hausaufgabe|Abgabe]] der Hausaufgabe das [[Subversion|SVN]]-Repository ihrer Gruppe: {{:Abgabe/Hausaufgabe}}
Verwenden Sie außerdem in Ihrer Commit-Message einen Befehl, um die von Ihnen angelegten Tickets zu schließen. Die Syntax dafür finden Sie im Artikel [[SVN#Trac_und_SVN|Trac und SVN]].
 
=== Abgabe Finalisieren ===
{{RefImg|gitea_mergehomework.png|600px|12|Detailansicht eines Tasks.}}
Wenn Sie in Ihrer Gruppe die Aufgaben als Leztes abschließen (d.h. sie den lezten offenen Task (nicht Userstory) im Sprint schießen, müssen Sie noch folgende Schritte ausführen.
* Schießen Sie alle Userstories für die die entsprechenden Tasks abgeschlossen wurden (da alle Tasks geschlossen sind, sollten das alle Userstories sein).
* Erstellen sie einen [[Gitea#Pullrequest|Pullrequest]], sodass der aktuelle Stand von ''dev'' nach ''master'' gemerged wird. Gehen Sie wie folgend vor:
** Klicken Sie in Gitea auf den Reiter ''Code''.
** Wählen Sie im Branch-dropdown den Branch ''dev''.
** Drücken Sie auf den Grünen Button neben dem Branch-dropdown.
** Prüfen Sie im folgenden Dialog, dass als Ziel ''master'' und als pullen von ''dev'' gewählt sind. Geben Sie dem Pullrequest den Titel ''Hausaufgabe''.
** Drücken Sie auf **Pullrequest Erstellen**.
** Drücken Sie im Folgenden zwei mal auf ''Pull-Request Zusammenführen''.
 
Die Änderungen die Sie und ihre Gruppe Während des Hausaufgabensprints gemacht haben, wurden nun in den Masterbranch übertrangen.


=== Hinweise ===
=== Hinweise ===

Version vom 4. Oktober 2018, 16:35 Uhr

Einleitung

Zu Beginn des Softwarepraktikums soll sich jeder Teilnehmer mit C#, MonoGame und den dazugehörigen Werkzeugen vertraut machen. Ein guter Startpunkt dafür ist die Tutorial-Seite. Außerdem soll der erste Anstoß zum selbständigen Recherchieren der benötigten Quellen für das Softwarepraktikum gegeben werden. Aus diesem Grund müssen von jedem Teilnehmer in der ersten Woche (siehe Roadmap) verbindliche Hausaufgaben gemacht werden. Diese bestehen aus 5 Aufgaben.

  • Lesen Sie den Text jeder Aufgabe vollständig durch, bevor Sie mit der Bearbeitung beginnen.
  • Bearbeiten Sie die Aufgaben der Reihe nach.
  • Beginnen Sie erst, wenn die Gruppeneinteilung online ist.

Aufgabe 1: Setup

Setzen Sie eine Arbeitsumgebung auf und testen Sie die Zugänge zu den verschiedenen Diensten. Falls Sie mit einem Mac arbeiten, beachten Sie die Informationen zur Entwicklung mit einem Mac.

Arbeitsumgebung

Sie finden die relevanten Download-Links unter Downloads.

Dienste

Um auf die Dienste zugreifen zu können, brauchen Sie einen gültigen Poolaccount.

Die folgenden Dienste sollten Sie getestet haben:

  • Zugang zu ihrem SVN-Repository
  • Zugang zum Trac ihrer Gruppe
  • Die Gruppenmailingliste
  • TODO

Die Adressen dieser Dienste finden sich auf der Gruppeneinteilungsseite.

Aufgabe 2: Gitea

Bereiten Sie ihr Gitea auf den Hausaufgabensprint und die Aufgaben ihrer Gruppe vor. Gehen Sie dazu wie folgt vor.

Gitea vorbereiten

Um Gitea in Verbindung mit Scrumm verwenden zu können, müssen vorher bestimmte Labels für die Items im Backlog (Issuetracker) eingerichtet werden.

Datei:Gitea setuptags.png
Abbildung 2: Auswahl der vorkonfigurierten Labels.
  • Klicken Sie auf Issues.
  • Klicken Sie auf Labels.
  • Wenn noch keine Labels eingerichtet wurden, werden Sie gefragt ob eines der vorkonfigurierten Menge von Labels verwendet werden solln. Wählen Sie hier das vorkonfigurierte Set Sopra.

Sprint für Hausaufgabe anlegen

Abbildung 2: Das Formular für die Erstellung eines neuen Milestones.

Prüfen sie ob in Gitea ein Sprint (Milestone) für die Hausaufgabe angelegt wurde.

  • Klicken Sie auf den Reiter Issues.
  • Klicken Sie auf den Button Milestones
  • Falls noch keinen Sprint (Milestone) für die Hausaufgabe angelegt wurde, legen sie diesen an. Verwenden Sie das Datum für das Ende des Sprints die Abgabe auf der Roadmap.


Userstory für die Hausaufgabe anlegen

Abbildung 4: Neue Userstory anlegen.

Prüfen Sie ob für die Hausaufgabe bereits alle Userstories existieren. Wenn nicht, legen Sie diese an.

  • Klicken Sie auf den Reiter Issues.
  • Prüfen Sie ob bereits ein Item Alle Studenten in der Gruppe sollen Git und Gitea bedienen können, damit sie in Zukunft produktiver arbeiten. existiert und mit user story getaggt ist. Wennicht legen Sie eine entsprechende Userstory an indem Sie den weiteren Punkte folgen.
  • Klicken Sie auf den Button Neuer Issue.
  • Tragen sie als Titel Alle Studenten in der Gruppe sollen Git und Gitea bedienen können, damit sie in Zukunft produktiver arbeiten. ein.
  • Weisen Sie die Label user story und priority: high zu, indem Sie auf das Zahnrad neben dem Schrifzug Label drücken und die entsprechenden Label auswählen.
  • Weisen Sie den Sprint (Meilenstein) Hausaufgabe zu.
  • Dürcken sie auf Issue Erstellen.
  • Fügen Sie außerdem noch die beiden User Stories Alle Studenten in der Gruppe sollen das soll die Texte verstehen, damit sie besser Spiele entwickeln können. und Alle Studenten in der Gruppe sollen soll ein MonoGame Programm schreiben um zu prüfen ob alles funktioniert. auf dieselbe Art hinzu.


Tasks für Aufgabe 3 erstellen

Legen Sie nun einen Task "Student <username> soll 'Scrum' verstehen" an.

  • Klicken Sie auf den Reiter Issues.
  • Klicken Sie auf den Button Neuer Issue.
  • Tragen Sie als Titel Student <username> soll Scrum verstehen ein.
  • Weisen Sie das Label priority: high zu.
  • Weisen Sie den Sprint (Meilenstein) Hausaufgabe zu.
  • Speichern Sie den Task ab, indem sie Issue Erstellen dürcken.


Tasks für Aufgabe 4 erstellen

Erstellen Sie auf dieselbe Weise die Tasks für Aufgabe 4:

  • 'Clean Code Development' Artikel lesen
  • 'Dokumentation' Artikel lesen
  • 'Usability-Prinzipien beim Spieldesign' Artikel lesen
  • 'Git' Artikel lesen


Tasks für Aufgabe 5 erstellen

Erstellen Sie einen Task für Aufgabe 5, z.B. "Programm schreiben", auf dieselbe Weise wie für Aufgaben 3 und 4.

Tasks akzeptieren

Bevor Sie mit den Aufgaben beginnen, sollten Sie Ihren entsprechenden Tasks akzeptieren.

  • Wählen Sie einen Taks aus dem Productbacklog (Issues) aus, indem Sie auf den Titel des Tasks klicken.
  • Weisen Sie das Lebel estimate: 1 zu um eine abgeschätzte Arbeitszeit von einer Stunde anzugeben.
  • Weisen Sie den Sprint (Meilenstein) Hausaufgabe zu.
  • Weisen Sie sich dem Taks zu, indem Sie auf das Zahnrad neben dem Schriftzug Zuständig klicken, und ihren Benutzernamen auswählen.

Die Änderungen werden sofort nach der Änderung gespeichert. Es ist nicht nötig einen Kommentar zu schreiben.

Überprüfen der Tasks

Abbildung 13: Tasks und Userstories für die Hausaufgabe.

Bevor Sie beginnen sich Tickets zuzuweisen und mit der Arbeit zu beginnen, prüfen Sie noch einmal ob alle Tasks und Userstories im Sprintbacklog vorhanden sind.

  • Klicken sie auf den Reiter Issues.
  • Klicken sie den Button Meilensteine.
  • Klicken sie auf den Meilenstein Hausaufgabe.
  • Schränken Sie die Anzeige auf Userstories ein, indem sie in dem Sie den Button Label ⯆ drücken und das Label user story auswählen. Prüfen Sie ob alle Userstories vorhanden sind.
  • Schränken Sie die Anzeige auf ihnen Zugewiesene Tasks ein, indem sie unter Label alle Labels wählen, und unter Zuständig ⯆ ihren Usernamen. Prüfen Sie ob alle Tasks vorhanden sind.
  • Erstellen Sie eventuell nicht vorhandene Userstories und Tasks wie in den vorhergehenden Aufgaben beschrieben.


Aufgabe 3: Scrum und Gitea verstehen

  • Recherchieren Sie, was Scrum ist und wie Scrum funktioniert.
  • Lesen Sie außerdem den Wikipedia-Artikel zu User Stories.
  • Machen Sie sich mit den anderen Funktionen von Gitea vertraut und lesen Sie den Artikel Scrumm und Gitea
  • Beschreiben Sie in einem Kommentar zu Task "Student <username> soll 'Scrum' verstehen" kurz und prägnant wie Scrum funktioniert.

Aufgabe 4: Texte lesen

Lesen Sie sich die folgenden Artikel durch, und kommentieren Sie ihr entsprechendes Ticket:

  • Clean Code Development und beschreiben sie __ein__ Cleancodeprinzip (dass sonst noch keiner aus Ihrer Gruppe gewählt hat) kurz und prägnant.
  • Dokumentation
  • Usability-Prinzipien beim Spieldesign und beschreiben Sie eine Verletzung der Usability-Prinzipien in einem Spiel (oder anderer Software).
  • Gitea und Git clonen Sie ihr Gruppenrepository. Verändern sie etwas in der Readme.md. Schließen Sie ihr Ticket für diese Aufgabe über die Commitmessage, und pushen sie den Commit.


Tasks bearbeiten

Bearbeiten sie die Tasks und tragen sie entsprechende Zeiten in den Tickets ein. 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).

Achtung: Geben Sie acht beim Zeit eintragen, da Sie die Summe nachträglich nur nach oben verändern können.

Tasks schließen

Wenn Sie mit einer Aufgabe fertig sind, sollten Sie Ihren entsprechenden Task schließen. Gehen Sie ähnlich wie beim Akzeptieren eines Tasks vor und drücken Sie auf den Button Schießen.

Vergessen Sie nicht die Zeit die Sie für den Task benötigt haben, einzutragen (falls Sie das noch nicht gemacht haben).

Aufgabe 5: Programm schreiben

Abbildung 14: Das fertige Programm könnte so aussehen.

Bevor Sie mit dieser Aufgabe beginnen, sollten Sie Ihren entsprechenden Task akzeptieren.

Erstellen Sie ein MonoGame Programm, welches die folgenden Eigenschaften erfüllt:

Funktionale Anforderungen

Abbildung 15: Das Uni-Logo
Abbildung 16: Hintergrundgrafik
  • Das Programm zeichnet eine Hintergrundgrafik in einem MonoGame-Fenster.
  • Vor dieser Hintergrundgrafik rotiert ein Uni-Logo um den Bildschirmmittelpunkt.
    • Das Logo muss transparent sein, d.h. es dürfen keine weißen Ränder der verwendeten Grafik sichtbar sein. Außerdem muss durch alle nicht-schwarzen Stellen des Logos hindurchgesehen werden können.
    • 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.)
  • Innerhalb des MonoGame-Fensters wird ein Maus-Cursor angezeigt.
    Hinweis, falls Sie mit einer virtuellen Maschine arbeiten, in der Windows installiert ist: Normalerweise wird der Mauszeiger in MonoGame Fenstern standardmäßig ausgeblendet, wenn man ihn nicht explizit aktiviert. Beim Arbeiten mit einer virtuellen Maschine kann es jedoch sein, dass der Mauszeiger im Fenster immer angezeigt wird. In diesen Fällen wird nicht bemerkt, dass man den Mauszeiger eigentlich hätte anschalten müssen. Um sicher zu stellen, dass die Anforderung erfüllt ist, testen Sie Ihr Programm sicherheitshalber noch einmal an einem der Poolrechner unter Windows, um einen möglichen Punktabzug an dieser Stelle in der Hausaufgabe auszuschließen.
  • 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 nicht über dem Logo, soll ein Ton B erklingen.
    • Ton A und Ton B müssen verschieden sein.

Randbedingungen

Die Randbedingungen müssen erfüllt werden. Insbesondere muss Ihre Abgabe komplett frei von Resharper-Fehlern und Warnungen sein. Die zu verwendenden Settings sind die der finalen Abgabe (Softwarepraktikum-final.DotSettings).

ReSharper-Hinweise

Beim Erstellen eines MonoGame-Projekts wird eine Variable, mGraphics von MonoGame angelegt, welche augenscheinlich initial nicht verwendet wird. Das heißt, sie wird innerhalb des Quelltextes nicht gelesen. Die Variable wird jedoch intern von der MonoGame-Engine verwendet und darf nicht gelöscht werden, da sonst wichtige Grafikschnittstellen nicht gefunden werden und das Programm abstürzt.

Es kann sein, dass die Hausaufgabe programmiert werden kann, ohne dass man diese Variable jemals irgendwo verwenden muss. Dies führt dazu, dass ReSharper eine Fehlermeldung bzgl. einer unbenutzten Variable im Projekt ausgibt.

Um ReSharper-Konformität der Hausaufgabe unter diesen Bedingungen herzustellen, sind mehrere Möglichkeiten denkbar:

  1. Verwenden der mGraphics Variable bei der Erstellung eines Sprite-Batches. Es ist möglich, den SpriteBatch, auf dem das Uni-Logo gezeichnet wird, mit
    someSpriteBatch = new SpriteBatch(mGraphics.GraphicsDevice);
    
    zu initialisieren.
  2. Hinzufügen einer ReSharper-Ausnahme für die Variable mGraphics. Eine Ausnahme für diese Variable ist die einzige Ausnahme, die wir akzeptieren.

Ressourcen

Damit das Erstellen von Grafiken ignoriert werden kann, gibt es hier die beiden Beispieldateien aus der Einführungsveranstaltung:

Als Audiodateien können beliebige, kurze, Dateien verwendet werden. Die beiden aus der Einführungsveranstaltung bekannten Waves gibt es hier:

Abgabe

Bitte verwenden Sie zur finalen Abgabe der Hausaufgabe das SVN-Repository ihrer Gruppe: Abgabe/Hausaufgabe

Abgabe Finalisieren

Abbildung 12: Detailansicht eines Tasks.

Wenn Sie in Ihrer Gruppe die Aufgaben als Leztes abschließen (d.h. sie den lezten offenen Task (nicht Userstory) im Sprint schießen, müssen Sie noch folgende Schritte ausführen.

  • Schießen Sie alle Userstories für die die entsprechenden Tasks abgeschlossen wurden (da alle Tasks geschlossen sind, sollten das alle Userstories sein).
  • Erstellen sie einen Pullrequest, sodass der aktuelle Stand von dev nach master gemerged wird. Gehen Sie wie folgend vor:
    • Klicken Sie in Gitea auf den Reiter Code.
    • Wählen Sie im Branch-dropdown den Branch dev.
    • Drücken Sie auf den Grünen Button neben dem Branch-dropdown.
    • Prüfen Sie im folgenden Dialog, dass als Ziel master und als pullen von dev gewählt sind. Geben Sie dem Pullrequest den Titel Hausaufgabe.
    • Drücken Sie auf **Pullrequest Erstellen**.
    • Drücken Sie im Folgenden zwei mal auf Pull-Request Zusammenführen.

Die Änderungen die Sie und ihre Gruppe Während des Hausaufgabensprints gemacht haben, wurden nun in den Masterbranch übertrangen.

Hinweise

  • Falls Sie Probleme beim Starten der Anwendung haben, schauen Sie zuerst in die FAQ. Ein oft auftretendes Problem ist z.B. die Fehlermeldung "No suitable graphics card found".
  • Möglicherweise wird bei Ihnen kein Sound abgespielt, obwohl dies Ihrer Einschätzung nach eigentlich der Fall sein sollte. Prüfen Sie in diesem Fall, ob die Installation der DirectX Runtime das Problem behebt.