Hausaufgabe

Aus Das Sopra Wiki

Zu Beginn des Softwarepraktikums soll sich jeder Teilnehmer mit C#, XNA 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 4 Aufgaben.

Lesen Sie den Text jeder Aufgabe vollständig durch, bevor Sie mit der Bearbeitung beginnen.


Aufgabe 1: Setup

Setzen Sie eine Arbeitsumgebung auf und testen Sie die Zugänge zu den verschiedenen Diensten.

Mindestens die folgenden Werkzeuge (die Sie auf unserer Downloads-Seite finden) sollten Sie installiert und konfiguriert haben:

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. WWW-Passwort einrichten.

Die folgenden Dienste sollten Sie getestet haben:

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

Die Adressen dieser Dienste finden sich auf der Gruppeneinteilungsseite.


Aufgabe 2: Trac

Erstellen Sie für die Bearbeitung der Aufgabe 3 Tasks im Trac Ihrer Gruppe. Gehen Sie dazu wie folgt vor.

Product und Sprint Backlog für "Hausaufgabe" anlegen

Abbildung 1: Administrationsmenü für Product Backlog.

Prüfen Sie, ob in Ihrem Trac bereits ein Product Backlog "Product Backlog" und ein Sprint Backlog "Sprint Backlog" angelegt wurde. Falls nein, legen Sie diese 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 darauf klicken. Unter "Column Preferences", wählen Sie die Kombination der Form Property:Order "Business Value":0, "Importance":2, "Story Points":3 aus. Bei der Property "Story Points" geben Sie 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" as 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 wählen Sie die Property:Order Kombinationen, "Owner":1, "Remaining Time":0 und "Resources":2 aus. Geben Sie außerdem bei "Remaining Time" als Alternative "Total Remaining Time" an.


Milestone für Hausaufgabe anlegen

Abbildung 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. Falls nein, legen Sie diesen an.

  • Klicken Sie in der oberen Navigationsleiste auf "Admin".
  • Klicken Sie in der linken Leiste auf "Milestones".
  • Fügen Sie den neuen Milestone "Hausaufgabe" mit dem Datum der Abgabe (siehe Roadmap, Datumsformat beachten!) hinzu.


Sprint für Hausaufgabe anlegen

Abbildung 3: Das Formular zum Anlegen eines neuen Sprints.

Prüfen Sie, ob in Ihrem Trac bereits ein Sprint für die Hausaufgabe angelegt wurde. Falls nein, legen Sie diesen an.

  • Klicken Sie in der oberen Navigationsleiste auf "Admin".
  • Klicken Sie in der linken Leiste auf "Sprints".
  • 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.
  • 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.


Requirement für die Hausaufgabe anlegen

Abbildung 4: Neues Requirement anlegen.

Prüfen Sie, ob in Ihrem Trac bereits das Requirement "Hausaufgabe machen" im Product Backlog angelegt ist. Falls nein, legen Sie dieses an.

  • Klicken Sie am linken Rand auf "Product Backlog" und überprüfen Sie eventuell vorhandene Requirements.
  • Klicken Sie auf der linken Seite unter Actions auf "New Requirement".
  • Nennen Sie das neue Requirement "Hausaufgabe machen", weisen Sie dem Requirement den Milestone "Hausaufgabe" zu und speichern Sie es ab.


User Story anlegen

Abbildung 5: Neue User Story anlegen.

Legen Sie eine neue User Story für das Requirement "Hausaufgabe machen" an.

  • Klicken Sie am linken Rand unter Actions auf "New User Story".
  • Nennen Sie die User Story z.b. "<username> muss die Hausaufgabe machen".
  • 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.


Task für Aufgabe 3 erstellen

Abbildung 6: Neuen Task zur User Story hinzufügen.

Erstellen Sie einen Task für die Aufgabe 3.

  • Klicken Sie am linken Rand auf das Product Backlog.
  • Klicken Sie auf die ID der eben angelegten User Story.
  • Klicken Sie im oberen Bereich auf "Edit".
  • Klicken Sie in der Kategorie "References" auf "Create a new referenced 'Task'".
  • Geben Sie einen Tasknamen für das Lesen der Texte an, z.B. "Texte lesen".
  • 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.


Task für Aufgabe 4 erstellen

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

Überprüfen der Tasks

Überprüfen Sie, ob Ihre Tasks richtig erstellt wurden, indem Sie sich das Product Backlog und das Sprint Backlog ansehen.

OLD

Komponente "Hausaufgabe" anlegen

Abbildung 1: Administrationsmenü für Komponenten.

Prüfen Sie, ob in Ihrem Trac bereits eine Komponente "Hausaufgabe" angelegt wurde. Falls nein, legen Sie diese an.

  • Klicken Sie in der oberen Navigationsleiste auf "Admin".
  • Klicken Sie in der linken Navigation auf Ticket System->Components.
  • Sie sehen nun eine Liste der existierenden Komponenten. Sie können diese löschen oder verändern.
  • Wenn die Komponente "Hausaufgabe" bereits existiert, müssen Sie nichts mehr machen.
  • Wenn nicht, müssen Sie eine neue Komponente anlegen. Sie können dies mit dem Kasten "Add Component" machen. Lassen Sie dabei das "Owner"-Feld leer.


Übergeordnetes Ticket erstellen

Abbildung 2: Das Formular für die Erstellung neuer Tickets.

Erstellen Sie ein übergeordnetes Ticket für Ihre Hausaufgabe.

  • Klicken Sie in der oberen Navigationsleiste auf "New Ticket".
  • Tragen Sie im Feld "Summary" eine kurze Beschreibung, z.B. "<username>: Hausaufgabe machen", ein.
  • Wählen Sie im Feld "Type" den Typ des Tickets aus, in diesem Fall "task". Sie können die verfügbaren Typen (und auch Priorities, Milestones und Versions) ähnlich wie die Komponenten im Admin-Interface konfigurieren.
  • Wählen Sie im Feld "Component" die Komponente, zu der dieses Ticket gehört; in diesem Fall "Hausaufgabe".
  • Tragen Sie Ihren Benutzernamen im Feld "Owner" ein. Der Owner ist derjenige, der für die Bearbeitung des Tickets verantwortlich ist.
  • Lassen Sie die Felder "Version" und "Milestone" frei.
  • Klicken Sie nun auf "Create Ticket".


Ticket für Aufgabe 3 erstellen

Abbildung 3: Um anzuzeigen, dass ein Ticket ein anderes blockiert, d.h. dessen Abschluss verhindert, kann man die ID dieser anderen Tickets im Feld "Blocking" eintragen. Umgekehrt kann man im Feld "Blocked By" eintragen, welche Tickets dieses Ticket blockieren.

Erstellen Sie ein Ticket für die Aufgabe 3:

  • Gehen Sie wie beim vorherigen Ticket vor, aber verwenden Sie nun einen anderen Namen, z.B. "Texte lesen".
  • Tragen Sie außerdem bei diesem Ticket ein, dass es das vorher erstellte, übergeordnete Ticket "<username>: Hausaufgabe machen" blockiert. Dazu tragen Sie im Feld "Blocking" die ID des vorherigen Tickets ein. Falls Sie die ID nicht mehr wissen, können Sie diese in der Ticketliste nachschlagen. Der Aufgabenteil "Custom Query erstellen" erklärt Ihnen, wie sie das tun.


Ticket für Aufgabe 4 erstellen

Erstellen Sie ein Ticket für die Aufgabe 4, z.B. "Programm schreiben". Tragen Sie bei dem Ticket ein, dass es das übergeordnete Ticket "<username>: Hausaufgabe machen" blockiert. Gehen Sie wie im Aufgabenteil "Ticket für Aufgabe 3 erstellen" vor.

Custom Query erstellen

Abbildung 4: In der Ansicht "View Tickets" kann eine Custom Query erstellt werden.
Abbildung 5: Eine Custom Query kann verschiedene Filter besitzen, die die Menge der anzuzeigenden Tickets einschränkt. Außerdem kann eingestellt werden, welche Informationen eines Tickets in der Ausgabeliste angezeigt werden und wie diese gruppiert werden können. Die Query kann auch mit "Save query" unter einem Namen gespeichert werden, sodass sie in der "View Tickets"-Liste wieder auftaucht.
Abbildung 6: Ergebnis der vorher erstellten Custom Query, die alle aktiven Tickets für den Benutzer "dietsch" anzeigt.

Überprüfen Sie, ob Ihre Tickets richtig erstellt worden. Verwenden Sie dazu eine "Custom Query". Eine Custom Query ist eine von Ihnen konfigurierte Ansicht, die Tickets und ihre Attribute filtert. Um eine geeignete Ansicht für Ihre Tickets 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 Abbildung 5 dargestellt.
  • Klicken Sie auf "Update" um festzustellen, ob die Query richtig funktioniert.
  • Klicken Sie auf "Save query" um die Query unter einem geeigneten Namen abzuspeichern. Sie können sie später jederzeit wieder löschen.

Es gibt noch viele andere Arten, Ihre Ticketabfragen zu personalisieren. Für weiterführende Informationen können Sie die Trac-Dokumentationsseiten TracReports und TracQuery besuchen.

Aufgabe 3: Texte lesen

Ticket akzeptieren

Abbildung 7: Detailansicht eines Tickets.

Bevor Sie mit dieser Aufgabe beginnen, sollten Sie Ihr entsprechendes Ticket akzeptieren.

  • Verwenden Sie Ihre Custom Query aus Aufgabe 4, "Custom Query erstellen" um das Ticket für Aufgabe 3 zu finden.
  • Wenn Sie das Ticket geöffnet haben, suchen Sie nach dem Block "Action" (siehe Abbildung 7).
  • Wählen Sie dort "accept" und klicken Sie dann auf "Submit changes".


Texte lesen

Lesen Sie sich die folgenden Artikel durch:

Sollten Sie Fragen zu diesen Artikeln haben, wenden Sie sich an Ihren Tutor.

Ticket schließen

Wenn Sie mit dieser Aufgabe fertig sind, sollten Sie Ihr entsprechendes Ticket schließen. Gehen Sie ähnlich wie beim Akzeptieren eines Tickets vor, aber wählen Sie jetzt im Block "Action" (siehe Abbildung 7) die Option "resolve as fixed" und klicken Sie dann auf "Submit changes".

Aufgabe 4: Programm schreiben

Abbildung 8: Das fertige XNA-Programm könnte so aussehen.

Bevor Sie mit dieser Aufgabe beginnen, sollten Sie Ihr entsprechendes Ticket akzeptieren.

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

Funktionale Anforderungen

Abbildung 9: Das Uni-Logo
Abbildung 10: Hintergrundgrafik
  • Das Programm zeichnet eine Hintergrundgrafik in einem XNA-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.
    • 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 muss teilweise durchsichtig (transparent) sein.
  • Innerhalb des XNA-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:
    • Liegt der Cursor über dem Logo, soll ein Ton A erklingen.
    • Liegt der Cursor nicht über dem Logo, soll ein Ton B erklingen.
    • Ton A und Ton B müssen verschieden sein.

Technische Anforderungen

Die technischen Anforderungen müssen bis auf die folgenden Ausnahmen erfüllt werden:

  • Das Programm muss nicht auf allen Desktop-Windows Versionen ab Windows XP SP 2 und höher lauffähig sein. Es reicht, wenn es auf einer höheren Version lauffähig ist. Falls diese Version nicht Windows 7 bzw. Windows 7 SP1 ist, geben Sie dies bitte in einer readme.txt an, die sie der Abgabe beilegen.

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 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 Trac und SVN.

Hinweise