Hausaufgabe: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Langenfeld (Diskussion | Beiträge)
Aufgabe 2: Gitea: , user stories in items umbenannt
Langenfeld (Diskussion | Beiträge)
 
(17 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 15: Zeile 15:


=== Arbeitsumgebung ===
=== Arbeitsumgebung ===
Im Fogenden sollen Sie ihre Arbeitsumgebung einrichten. Sie können im Sopra beliebige andere Werkezeuge verwenden, müssen aber sicherstellen, dass diese mit den hier vogestellten Werkzeugen kompatibel sind.
Im Folgenden sollen Sie ihre Arbeitsumgebung einrichten. Sie können im Sopra beliebige andere Werkzeuge verwenden, müssen aber sicherstellen, dass diese mit den hier vorgestellten Werkzeugen kompatibel sind.


* Folgen Sie dem Artikel [[Arbeitsumgebung einrichten]] entsprechend Ihrem Betriebssystem um ihre Entwicklungsumgebung einzurichten.
* Folgen Sie dem Artikel [[Arbeitsumgebung einrichten]] entsprechend Ihrem Betriebssystem um ihre Entwicklungsumgebung einzurichten.
* Folgen Sie dem Artikel [[Virtuelles Treffen#Funktionstest von Sound und Video|Virtuelles Treffen]] um auszuprobieren, ob sie ohne technische Probleme an einem Gruppentreffen teilnehmen können.
* Folgen Sie dem Artikel [[Virtuelles Treffen#Funktionstest von Sound und Video|Virtuelles Treffen]] um auszuprobieren, ob sie ohne technische Probleme an einem Gruppentreffen teilnehmen können.


=== Dienste ===
* Folgen Sie dem Artikel [[Dienste#Erstbenutzung|Dienste]] um ihre Zugänge zu allen Diensten einzurichten.
 
Die folgenden Dienste sollten Sie eingerichtet und getestet haben:
* Zugang zum [[Gitea]] ihrer Gruppe auf [https://sopragit.informatik.uni-freiburg.de Sopra Git].
* Die Gruppenmailingliste.


== Aufgabe 2: Gitea ==
== Aufgabe 2: Gitea ==
Zeile 62: Zeile 58:
=== Items für Aufgabe 4 erstellen ===
=== Items für Aufgabe 4 erstellen ===


Erstellen Sie wie in den vorhergehenden Aufgaben beschrieben, eine Item für Aufgabe 4
Erstellen Sie wie in den vorhergehenden Aufgaben beschrieben, Items für Aufgabe 4
* Titel <code>Student <NAME> soll die Clean Code Development Texte lesen</code> mit Beschreibung <code>Student <NAME> soll die Clean Code Development Texte lesen, um besseren Code schreiben zu können.</code>
* Titel <code>Student <NAME> soll die Clean Code Development Texte lesen</code> mit Beschreibung <code>Student <NAME> soll die Clean Code Development Texte lesen, um besseren Code schreiben zu können.</code>
* Titel <code>Student <NAME> soll den Usability Artikel lesen</code> mit Beschreibung <code>Student <NAME> soll den Usability Artikel lesen, um von vornherein Usabilityprobleme zu vermeiden.</code>
* Titel <code>Student <NAME> soll den Usability Artikel lesen</code> mit Beschreibung <code>Student <NAME> soll den Usability Artikel lesen, um von vornherein Usabilityprobleme zu vermeiden.</code>
Zeile 93: Zeile 89:
* 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 [[Scrum und Gitea]]
* Machen Sie sich mit den anderen Funktionen von [[Gitea]] vertraut und lesen Sie den Artikel [[Scrum und Gitea]]
* Sollte es Fragen zum Vorgehen (Scrum und Gitea) geben, schreiben Sie diese als Kommentar in ihre User Story, damit eventuelle Fragen schnell geklärt werden können (Kommentarfeld unter <code>Issues -> Meilensteine -> Hausaufgabe -> Student <NAME> soll Scrum, Gitea und Git verstehen</code>).
* Sollte es Fragen zum Vorgehen (Scrum und Gitea) geben, schreiben Sie diese als Kommentar in ihr Item in Gitea, damit eventuelle Fragen schnell geklärt werden können (Kommentarfeld unter <code>Issues -> Meilensteine -> Hausaufgabe -> Student <NAME> soll Scrum, Gitea und Git verstehen</code>).
* Lesen sie die Artikel [[GIT|Git]] und [[GitWorkflow| Git Workflow]]
* Lesen sie die Artikel [[GIT|Git]] und [[GitWorkflow| Git Workflow]]
** [[Git#Repository clonen|Klonen]] sie das Gruppenrepository.
**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]].
** Schreiben Sie Ihren Namen in die dafür vorgesehene Zeile in <code>README.md</code>. Verwenden Sie hierfür '''nicht''' den Editor in Gitea, sondern editieren sie die Datei in ihrem lokalen Git-Repository. Falls es bereits einen Termin für das Gruppentreffen gibt, tragen Sie diesen auch ein.
**[[Git#Repository klonen|Klonen]] sie das Gruppenrepository.
** [[Git#Änderungen an einer Datei| Committen]] sie ihre Änderungen: Benutzen sie die Commitnachricht <code>Added name to README.md (closes #<ticketnummer>)</code> um den entsprechenden Task in Gitea [[Git#Git und Gitea | per Commitnachricht zu schließen]].
** Ö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 in das remote Repository laden (pushen)| Synchronisieren]] sie ihre Änderungen mit dem Server. Beachten halten Sie sich dabei an [[GitWorkflow#Tägliche Arbeit Synchronisieren| den vorgeschlagenen Git-Workflow]]. Es it gut möglich, dass dabei Konflikte entstehen, beachten sie hierzu [[Git#Konflikte lösen| die Anleitung zum Konflikte lösen in Git]].
**[[Git#Änderungen an einer Datei| Committen]] sie ihre Änderungen: Benutzen sie die Commitnachricht <code>Added name to README.md (closes #<ticketnummer>)</code> um das entsprechende Item 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 dabei 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.
* Sollte es noch keine <code>.gitignore</code>-Datei in Ihrem Repository geben, erstellen Sie in ihrem Repository eine entsprechende Datei ([[Git#Dateien Ignorieren]]), sodass temporäre Dateien von Visual Stuidio und Verzeichnisse für den Compileroutput von Git ignoriert werden. Comitten Sie diese Datei und pushen Sie diese ebenfalls. Eine gute Vorlage finden Sie unter [https://github.com/github/gitignore/blob/master/VisualStudio.gitignore Github].
* Sollte es noch keine <code>.gitignore</code>-Datei in Ihrem Repository geben, erstellen Sie in ihrem Repository eine entsprechende Datei ([[Git#Dateien Ignorieren]]), sodass temporäre Dateien von Visual Stuidio und Verzeichnisse für den Compileroutput von Git ignoriert werden. Comitten Sie diese Datei und pushen Sie diese ebenfalls. Eine gute Vorlage finden Sie unter [https://github.com/github/gitignore/blob/master/VisualStudio.gitignore Github].


Zeile 106: Zeile 103:
Lesen Sie sich die folgenden Artikel durch, und kommentieren Sie ihr entsprechendes Ticket:
Lesen Sie sich die folgenden Artikel durch, und kommentieren Sie ihr entsprechendes Ticket:
* Lesen Sie [[CleanCode|Clean Code Development]]  
* Lesen Sie [[CleanCode|Clean Code Development]]  
** Beschreiben Sie in einem Kommentar zum entsprechenden Task ein Cleancodeprinzip und wieso Sie es für das Sopra für besonders wichtig erachten.
** Beschreiben Sie in einem Kommentar zum entsprechenden Item ein Cleancodeprinzip und wieso Sie es für das Sopra für besonders wichtig erachten.
* Lesen Sie [[Dokumentation]]
* Lesen Sie [[Dokumentation]]
* Lesen Sie [[UsabilityForGames|Usability-Prinzipien beim Spieldesign]]  
* Lesen Sie [[UsabilityForGames|Usability-Prinzipien beim Spieldesign]]  
** Beschreiben Sie in einem Kommentar zum entsprechenden Task ein Usabilityprinzip und wieso Sie es für das Sopra für besonders wichtig erachten.
** Beschreiben Sie in einem Kommentar zum entsprechenden Item ein Usabilityprinzip und wieso Sie es für das Sopra für besonders wichtig erachten.


=== User Stories bearbeiten ===
=== Items bearbeiten ===
Bearbeiten sie die Aufgaben und tragen Sie entsprechende Zeiten in die User Stories ein (im Menü rechts, ''Time Tracker -> Add Time''). 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 Items in Gitea ein (im Menü rechts, ''Time Tracker -> Add Time''). 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''': Sie können die Summe der einmal eingetragenen Zeit nachträglich nur nach oben verändern.
'''Achtung''': Sie können die Summe der einmal eingetragenen Zeit nachträglich nur nach oben verändern.


=== User Stories schließen ===
=== Items schließen ===
Wenn Sie mit einer Aufgabe fertig sind, sollten Sie Ihren entsprechenden User Stories schließen. Gehen Sie ähnlich wie beim Akzeptieren einer Story vor und drücken Sie auf den Button ''Schließen''. Beachten Sie bei Aufgaben die sie mit einem Commmit abschließen, dass Sie die User Story auch über die [[Git#Git und Gitea | per Commitnachricht schließen können]].
Wenn Sie mit einer Aufgabe fertig sind, sollten Sie Ihren entsprechenden Items schließen. Gehen Sie ähnlich wie beim Akzeptieren einer Story vor und drücken Sie auf den Button ''Schließen''. Beachten Sie bei Aufgaben die zu denen Sie etwas comitten, dass Sie das Item auch über die [[Git#Git und Gitea |Commitnachricht schließen können]].


Vergessen Sie nicht die Zeit, die Sie für den Task benötigt haben, einzutragen (falls Sie das noch nicht gemacht haben).
Vergessen Sie nicht die Zeit, die Sie für den Task benötigt haben, einzutragen (falls Sie das noch nicht gemacht haben).
Zeile 123: Zeile 120:
== Aufgabe 5: Programm schreiben ==  
== Aufgabe 5: Programm schreiben ==  
[[Datei:homework_final.jpg|thumb|right|Abbildung 5: Das fertige Programm könnte so aussehen.]]
[[Datei:homework_final.jpg|thumb|right|Abbildung 5: Das fertige Programm könnte so aussehen.]]
Bevor Sie mit dieser Aufgabe beginnen, sollten Sie Ihren entsprechenden User Story akzeptieren.
Erstellen Sie ein [[MonoGame]] Programm, welches die folgenden Eigenschaften erfüllt:  
 
Erstellen Sie ein [[MonoGame]] Programm, welches die folgenden Eigenschaften erfüllt:
=== Funktionale Anforderungen ===
=== Funktionale Anforderungen ===
[[Datei:unilogo.png|right|thumb|Abbildung 6: Das Uni-Logo]]
[[Datei:unilogo.png|right|thumb|Abbildung 6: Das Uni-Logo]]
Zeile 149: Zeile 144:


Um ReSharper-Konformität der Hausaufgabe unter diesen Bedingungen herzustellen, sind mehrere Möglichkeiten denkbar:
Um ReSharper-Konformität der Hausaufgabe unter diesen Bedingungen herzustellen, sind mehrere Möglichkeiten denkbar:
# Verwenden der mGraphics Variable bei der Erstellung eines Sprite-Batches. Es ist möglich, den SpriteBatch, auf dem das Uni-Logo gezeichnet wird, mit<br /><source lang="csharp">someSpriteBatch = new SpriteBatch(mGraphics.GraphicsDevice);</source> zu initialisieren.
# Verwenden der mGraphics Variable bei der Erstellung eines Sprite-Batches. Es ist möglich, den SpriteBatch, auf dem das Uni-Logo gezeichnet wird, mit<br /><syntaxhighlight lang="csharp">var someSpriteBatch = new SpriteBatch(mGraphics.GraphicsDevice);</syntaxhighlight> zu initialisieren.
# Hinzufügen einer ReSharper-Ausnahme für die Variable <tt>mGraphics</tt>. Eine Ausnahme für diese Variable ist die einzige Ausnahme, die wir akzeptieren.
# Hinzufügen einer ReSharper-Ausnahme für die Variable <tt>mGraphics</tt>. Eine Ausnahme für diese Variable ist die einzige Ausnahme, die wir akzeptieren.


Zeile 156: Zeile 151:
=== Ressourcen ===
=== Ressourcen ===
Damit das Erstellen von Grafiken ignoriert werden kann, gibt es hier die beiden Beispieldateien aus der Einführungsveranstaltung:
Damit das Erstellen von Grafiken ignoriert werden kann, gibt es hier die beiden Beispieldateien aus der Einführungsveranstaltung:
* [[:Media:unilogo.png|Das Uni-Logo]]
* [[Medium:Unilogo.png|Das Uni-Logo]]
* [[:Media:background.png|Hintergrundgrafik]]
* [[Medium:Background.png|Hintergrundgrafik]]


Als Audiodateien können beliebige, kurze, Dateien verwendet werden. Die beiden aus der Einführungsveranstaltung bekannten Waves gibt es hier:
Als Audiodateien können beliebige, kurze, Dateien verwendet werden. Die beiden aus der Einführungsveranstaltung bekannten Waves gibt es hier:
* [[Datei:logo_hit.wav|Das Logo wird getroffen]]  
* [[Datei:logo_hit.wav|Das Logo wird getroffen]]
* [[Datei:logo_miss.wav|Das Logo wird nicht getroffen]]
* [[Datei:logo_miss.wav|Das Logo wird nicht getroffen]]


=== Abgabe ===
=== Abgabe ===
Bitte verwenden Sie zur finalen [[Abgabe#Hausaufgabe|Abgabe]] der Hausaufgabe das [[GIT|Git]]-Repository ihrer Gruppe: <code>Abgabe/Hausaufgabe</code>
Bitte verwenden Sie zur finalen [[Abgabe#Hausaufgabe|Abgabe]] der Hausaufgabe das [[GIT|Git]]-Repository ihrer Gruppe. Der Programmier-Teil der Hausaufgabe muss als komplettes [[Visual Studio]] Projekt abgegeben werden. Sie sollten dazu einfach das Projekt in das Gruppenrepository unter <code>/abgabe/hausaufgabe/<username>/</code> comitten.


== Abgabe Finalisieren ==
== Abgabe finalisieren ==


Wenn Sie in Ihrer Gruppe die Aufgaben als letztes abschließen (d.h. Sie die letzte offene User Story im Sprint schließen) erledigen Sie noch folgende Aufgabe. In den auf die Hausaufgabe folgenden Sprints erledigt dies der Product Owner.
Wenn Sie in Ihrer Gruppe die Aufgaben als letztes abschließen (d.h. Sie die letzte offene User Story im Sprint schließen) erledigen Sie noch folgende Aufgabe. In den auf die Hausaufgabe folgenden Sprints erledigt dies der Product Owner.




Der Fortschritt der während des Sprints erziehlt wurde (Inkrement) muss auf den <code>release</code> branch übtertragen werden, damit trotz weiterer Arbeit immer eine auslieferbare Version verfügbar ist.
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.
* Schließen Sie das Sprintbacklog (<code>Issues -> Meilensteine -> Hausaufgabe -> Schießen</code>).
* Schließen Sie das Sprintbacklog (<code>Issues -> Meilensteine -> Hausaufgabe -> Schießen</code>).
* Erstellen sie einen [[Gitea#Pullrequest|Pullrequest]] (siehe Abb. 8), sodass der aktuelle Stand von <code>master</code> nach <code>release</code> übertragen werden kann wird. Gehen Sie wie folgt vor:
* Erstellen sie einen [[Gitea#Pullrequest|Pullrequest]] (siehe Abb. 8), sodass der aktuelle Stand von <code>master</code> nach <code>release</code> übertragen werden kann wird. Gehen Sie wie folgt vor:
Zeile 180: Zeile 175:
** Gitea wird feststellen, dass <code>master</code> automatisch in <code>release</code> gemerged 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.
** Gitea wird feststellen, dass <code>master</code> automatisch in <code>release</code> gemerged 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, wurden nun in den <code>release</code>-branch übertrangen.
Die Änderungen die Sie und ihre Gruppe während des Hausaufgabensprints gemacht haben, wurden nun in den <code>release</code>-branch übertragen.


=== Hinweise ===
=== Hinweise ===
* Falls Sie Probleme beim Starten der Anwendung haben, schauen Sie zuerst in die [[FAQ]]. Ein oft auftretendes Problem ist z.B. die Fehlermeldung [[FAQ/Entwicklung/XNA#Wenn_ich_mein_Spiel_starten_will.2C_erhalte_ich_die_Fehlermeldung_.22No_suitable_graphics_card_found..22|"No suitable graphics card found"]].
* Falls Sie Probleme beim Starten der Anwendung haben, schauen Sie zuerst in die [[FAQ]] und in das [https://discourse.sopranium.de Discourse].
* 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 [https://www.microsoft.com/en-us/download/details.aspx?id=35 DirectX Runtime] das Problem behebt.
* 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 [https://www.microsoft.com/en-us/download/details.aspx?id=35 DirectX Runtime] das Problem behebt.


[[Kategorie:Organisation]]
[[Kategorie:Organisation]]
[[Kategorie:Entwurf]]
[[Kategorie:Entwurf]]