Ziel: Organisation von Aufgaben und Prozessen im Team mit Hilfe von Issues und des OpenUP an einem gemeinsamen Repository auf GitHub
Praktikumsaufgaben Teil 4 - Zusammenarbeit 2
Die Bearbeitung der Aufgabe 1 und zum Teil in Aufgabe 2 erfolgt in Ihrem Team-Repository htwd-se-example-teamproject aus dem letzten Praktikum. In Aufgabe 3 nehmen Sie Ihr Repository htwd-se-example-project.
Aufgrund der nicht gespeicherten Nutzer-Profile in den Windows-Laboren, sind zu jedem Praktikumsbeginn folgende Schritte durchzuführen:
Schritte zur Vorbereitung des Praktikums
-
Git-Konfiguration
C:\Users\<username>\.gitconfig
wiederherstellen oder anpassen:per Editor in der .gitconfig[user] name = Vorname Nachname email = s00000@htw-dresden.de [safe] directory = * [http] proxy = http://www-cache.htw-dresden.de:3128
oder per PowerShell und Git-Kommandos> git config --global user.name "Vorname Nachname" > git config --global user.email s00000@informatik.htw-dresden.de > git config --global --add safe.directory * > git config --global http.proxy http://www-cache.htw-dresden.de:3128
-
Visual Studio Code: Anpassen der AsciiDoc-Einstellungen:
-
Asciidoc > Preview: Use Editor Style: (deaktiviert)
-
Asciidoc > Extensions: Enable Kroki: (aktiviert)
-
-
GitHub Login mit gespeichertem oder neuem Personal Access Token über die PowerShell bekanntgeben:
Repository vorhanden> U: > cd path/to/repository/<repo-name>/ > git pull Authentifizierung ...
Repository nicht vorhanden (Home-/SAMBA-Laufwerk)> U: > cd path/to/repository/ > git clone https://github.com/.../<repo-name> Authentifizierung ...
Repository nicht vorhanden (TEMP-Laufwerk)> T: > git clone https://github.com/.../<repo-name> Authentifizierung ...
1. GitHub: Issues
Issues are a great way to keep track of tasks, enhancements, and bugs for your projects. They’re kind of like email—except they can be shared and discussed with the rest of your team. Most software projects have a bug tracker of some kind. GitHub’s tracker is called Issues, and has its own section in every repository. - GitHub |
GitHub bietet mit dem Bereich Issues eine Möglichkeit anstehende Aufgaben, aufgetretene Probleme und mögliche Verbesserungen zentral in Ihrem Projekt innerhalb Ihres Repository zu verwalten und zu diskutieren.
Jeder Issue (Aufgabe, Ticket, …) besteht aus einem Titel und der Beschreibung des Sachverhaltes. Zusätzlich können zur besserer Verwaltung noch Assignees (Beauftrage), Labels und weitere Kriterien hinzugefügt werden. Ebenfalls kann über Kommentar der Issue diskutiert und mit Anmerkungen versehen werden. Eine detailierte Beschreibung finden Sie in dem Guide: Mastering Issues
Bei Verwendung bestimmter Keywords (Closing issues using keywords) in den Commit Messages können referenzierte Issues automatisch geschlossen werden.
Hinweise: Verwenden von Referenzen in Issue-Kommentaren und Commits
In den Issues und Commits können in den Kommentaren/Mitteilungen Verweise auf andere Elemente verwendet werden. Diese werden von GitHub automatisch verlinkt.
Issue |
Nummer |
|
Commit |
SHA hash |
|
User |
Accountname |
|
Siehe auch: Autolinked references and URLs
Beispiele:
-
Commit Message:
-
Setze Erweiterung aus Issue #2 um
-
Setze Erweiterung um (#2)
-
-
Commit Message mit automatischem Schließen der zugehörigen Issue:
-
Korrigiere Fehler (close #2)
-
-
Issue Kommentar:
-
… siehe Commit 479bcfca71f10423c0f1181853017b83af062c46
-
Aufgabe 1.1 - Issues anlegen, kommentieren
Jeder im Team des Teamprojektes htwd-se-example-teamproject denkt sich eine kleine machbare Änderung oder Erweiterung für die Dokumentation in AsciiDoc aus.
-
Legen Sie jeweils zwei neue Issue in Ihrem Teamprojekt an. Denken Sie sich hierfür eine kleine, sinnvolle und umsetzbare Erweiterung für Ihre Dokumentation (AsciiDoc) im Projekt aus. Vergeben Sie einen Titel, eine Beschreibung und ein Label
asciidoc
. -
Schauen Sie sich die Issues Ihrer Teammitglieder an und diskutieren (kommentieren) Sie sie.
-
Weißen Sie sich gegenseitig über Assignees je zwei Issue zu und ergänzen Sie ein Label
documentation
.
Aufgabe 1.2 - Issues bearbeiten, referenzieren
-
Setzen Sie Ihre erste zugewiesene Issue um und nehmen Sie in der Commit Message eine Referenz der zugehörigen Issue auf.
Bspw. Commit Message mit Referenz zur Issue:Korrigiere falschen Teamnamen (Issue #6)
-
Nehmen Sie in der Issue eine Referenz zu Ihrem Commit als Kommentar auf und schließen Sie die fertig bearbeitete Issue am Ende über GitHub.
Bspw. Issue Kommentar auf GitHub mit Referenz zum Commit:Änderung der Teamnamen in Commit 5000fb638483c95d5f0346181af32096db2d23ff erfolgt.
-
Setzen Sie Ihre zweite zugewiesene Issue um und nehmen Sie in der Commit Message eine Referenz mit Schlüsselwort zur automatischen Schließung der zugehörigen Issue auf.
Bspw. Commit Message mit Referenz zur Issue und automatischer Schließung:Ändere Inhalt (close #6)
-
Schauen Sie sich die Issues (Open & Closed) und die dazu entstandenen Kommentare und Verweise durch die Referenzen an.
Aufgabe 1.3 - Aufgabenlisten in Issues
In den Issue-Beschreibungen können auch Aufgabenlisten angelegt werden. Dies können Teilschritte einer Issue sein oder eine Art Check-Liste, ob bspw. alle genannten Teammitglieder diese erfüllt haben. Bei Bedarf können Teilaufgaben auch in neue Issues umgewandelt werden.
Siehe auch: Informationen zu Aufgabenlisten
Hinweise: Beispiele für Aufgabenlisten in Issues
Use-Case UC01 bearbeiten - [ ] Kurzbeschreibung, Akteure und Vorbedingung erfassen - [ ] Standardablauf ausarbeiten - [ ] Szenario mit konkreten Daten zum Standardablauf ausarbeiten - [ ] ...
Macht euch mit Aufgabenlisten vertraut. - [ ] Person A - [ ] Person B - [ ] Person C
-
Erstellen Sie jeweils eine neue Issue und verwenden Sie in der Beschreibung eine Aufgabenliste.
-
Wandeln Sie eine der Teilaufgaben in der Aufgabenliste in eine neue Issue um.
-
Schauen Sie sich die eben erstellten Issues an.
2. Issues mit Filtern im Überblick behalten
In der Issues Anzeige von GitHub werden alle vorhandenen Issues und
Pull Requests aufgelistet. Standardmäßig ist die Sicht mit is:issue is:open
auf offene Issues gefiltert.
Hinweise zu den Filtermöglichkeiten
Für eine gezielte Sicht auf bestimmt Einträge, gibt es ein Vielzahl an Filtermöglichkeiten und deren Kombination. Ausgewählte finden Sie in der Tabelle 2, “Ausgewählte Filterkritterien” und eine komplette Liste und weitere Informationen unter folgenden Links:
Filter | Beschreibung |
---|---|
|
Pull-Requests |
|
Issues |
|
offen |
|
geschlossen |
|
von einem Nutzer erstellt |
|
einem Nutzer zugewiesen |
|
einem Label zugeordnet |
|
einem Meilenstein zugeordnet |
|
einem Projekt zugeordnet |
Filter | Beschreibung |
---|---|
|
keinem Label zugeordnet |
|
keinem Meilenstein zugeordnet |
|
keinem Projekt zugeordnet |
|
keinem Nutzer zugeordnet |
Ein Filter mit is:issue is:open no:assignee
ist sehr hilfreich, um offenen Issues, welchen keine Nutzer zur Bearbeitung zugeordnet sind, im Blick zu haben. Über ein sort:created-asc
lässt sich die Ausgabe zeitlich sortieren.
Filter lassen sich aktuell nicht direkt in GitHub speichern, aber die Seiten-URL enthält nach einer Suche den Filter und lässt sich so als Bookmark speichern. Für das obere Beispiel würde die URL am Ende wie folgt aussehen:/issues?q=is:open+is:issue+no:assignee+sort:created-asc
|
Aufgabe 2.1 - Issues filtern
Listen Sie in Ihrem Team-/Projekt-Repository oder einem anderen Repository Issues nach folgenden Filtern auf:
-
Alle geschlossenen Issues und Pull-Requests seit Semesterbeginn
-
Alle Issues die keinem Nutzer (Assignee) zugeordnet sind
-
Alle offenen Issues die keinem Projekt oder Meilenstein zugeordnet sind
-
Alle Issues die Sie erstellt haben und einem bestimmten Label
-
Alle offenen Issues denen Sie zugeordnet sind
-
Alle Issues in denen das Wort "Meeting" vorkommt
-
Alle Issues und Pull-Requests mit mehr als 2 Kommentaren
Schauen Sie sich weiteren Filtermöglichkeiten über den Button Filters ▼ oder Schnellfilter im Listenkopf (Author, Label, Projects, Milestines, Asignees, Sort) an und denken Sie sich ein paar weitere nützliche Filtermöglichkeiten für Ihr Projekt aus.
3. Issues im Kontext des OpenUP
Mit Issues lassen sich in GitHub zu einem Repository Aufgaben (tasks), Verbesserungen (enhancements) und Fehler (bugs) verwalten (Siehe Issues). Projects helfen diese Issues zusätzlich zu organisieren, zu priorisieren und den Fortschritt im Blick zu halten.
OpenUP is a lean Unified Process that applies iterative and incremental approaches within a structured lifecycle. OpenUP embraces a pragmatic, agile philosophy that focuses on the collaborative nature of software development.
Folgend eine Variante der Abbildung des OpenUP mit den Möglichkeiten von Issues und Projects von GitHub (Siehe auch Abbildung 3, “GitHub Issues im Kontext des OpenUP”):
OpenUP | GitHub | Hinweise |
---|---|---|
Phase |
Milestone |
|
Iteration |
Project |
|
User Story |
Issue |
|
Work Item |
Issue |
|
Work Item State |
Issue |
|
Project |
|
|
Complexity |
Project |
|
Note |
Issue |
|
Project Note |
|
|
Role |
Label |
|
Assignee |
|
Mit einem GitHub Project und verschiedenen Sichten (Views) ist der Projektfortschritt mit seinen Iterationen und WorkItems (Issues) für alle Teammitglieder immer ersichtlich. Folgend ein Beispiel:
Dabei ist zu beachten:
-
Projekte und Meilensteine können wie Issues nach Fertigstellung geschlossen (bzw. wieder geöffnet) werden.
-
Issues können ebenfalls einen Fortschrittsbalken anzeigen, wenn im Kommentar Checklisten mit
- [ ] task
angelegt werden. -
Issues können in Projekten zwischen den Zuständen mit Drag&Drop (Table View) oder durch bestimmte Schlüsselwörter (automatisiert, Status-Spalte) bewegt werden.
Hinweise zu Issues und Work Items
Beispiel mit Issues, Labels und Zuordnung zu Projekten und Meilensteinen.
-
Priorisierung von Work Items (Issues) nach Wichtigkeit (bspw. hoch, mittel, niedrig):
-
hoch: Work Items werden in die aktuelle Iteration aufgenommen
-
mittel: Work Items werden in die aktuelle oder nächste Iteration aufgenommen
-
niedrig: Work Items sind noch keiner Iteration zugeordnet oder dienen als Notiz einer weiteren Ausarbeitung.
-
Zeit und Ressourcen spielen ebenfalls eine Rolle, ob die Zuteilung der Work Items auf die aktuelle bzw. folgenden Iterationen erfolgt.
-
-
Es ist sinnvoll den Issues (Work Items) Asignees (Nutzer, Role) zuzuordnen, damit Klarheit über die Aufgabenzuteilung herrscht.
-
Für die Bezeichnungen der Issues hier im Beispiel als User Story X und Work Item X in Ihrem Repository bitte passendere verwenden.
-
Labels, die sich an den Rollen des OpenUP orientieren, helfen sie entsprechend zu filtern.
-
Die Issues dienen als Beispiele für die folgenden Hinweise zu User Stories, Projekten und Meilensteinen.
Hinweise zu User Stories und Issue-Referenzen
Verwendet man im Kommentar einer Issue die ID einer anderen Issue, taucht bei dieser ein entsprechender Verweis auf.
Im folgenden Beispiel ist in den Issues #15, #16, #17 und #18 die ID der gezeigten Issue #2 erwähnt worden. Diese enthält jetzt Verweise auf die genannten Issues.
Dies ist eine Möglichkeit, die aus User Stories (issue #2) extrahierten konkreten Work Items (Issues #15, #16, #17 und #18) zu referenzieren.
Hinweise zu Projekten (Projects) und Planung von Iterationen in GitHub
Die neuen GitHub Projects ermöglichen es innerhalb eines Projektes, die komplette Projektplanung mit allen Iterationen und zugehörigen Repositories abzubilden.
-
Planung, Zustände und Übersicht über die vergangenen, aktuelle und zukünftige Iterationen
-
Erfassung einer Complexity zu den Work Items (Issue) in den Iterationen
-
Verwaltung von Projektmitgliedern
-
Verwendung von Work Items (Issues) aus verschiedenen Repositories
-
Erstellung unterschiedlicher Sichten mit verschiedenen Schwerpunkten auf das Projekt
-
Erstellung von Diagrammen zum Zustand des Projektes
Die GitHub Projects sind in dieser Form noch relativ neu, so dass die Aufgaben noch nicht in allen Aspekten komplett angepasst sind. Ausführliche Informationen findet man unter folgenden Links: |
Folgend zwei Beispiele für eine Übersicht über alle Iterationen und eine fokussierte Sicht auf die aktuelle Iteration:
Damit so ein Projekt im Team genutzt werden kann, legt der Repository-Eigentümer das neue Projekt an und läd die anderen Teammitglieder, wie auch zum Repository, dazu ein.
-
Neue Projekte werden über den
gefolgt von New project angelegt: -
Nach dem Anlegen, kann mit einem Klick auf den Titel @account untitled project der Namen des Projektes in bspw. Projektplan: Thema I1 geändert werden.
-
im Projekt oben rechts auf … klicken
-
den Menüpunkt Settings → Manage access auswählen.
-
über Invite collaborators können jetzt die Teammitglieder gesucht und hinzugefügt werden
Als Rolle kann entweder
Admin
,Write
oderRead
ausgewählt werden.
-
im (Team-)Repository in den Reiter Projects wechseln
-
über den Button Link a project das zuvor angelegte Projekt auswählen
-
Iterationen können mit regelmäßigen, veränderlichen Zeiten und Pausen angelegt werden. Eine nachträgliche Anpassung ist ebenfalls möglich.
Siehe: Hinweise zum Anlegen und Verwenden von Iteration Fields
-
Table view: Zeile mit +-Button
-
Board view: + Add item-Button (Spalte Todo)
-
per + → Add item from repository → Repository wählen → Issues auswählen → Add selected items
-
-
per Suche (Add item) → Repository Namen eingeben und auswählen → Issue direkt wählen oder per Add multipleItems gleich mehrere aus dem gewählten Repository auswählen
-
Ein neues Feld über das + im Tabellenkopf (Table View) hinzufügen
-
+ New field wählen
-
Fieldname: Complexity
-
Field type: Number
-
-
Jetzt können den Work Items entsprechende Werte zugewiesen werden. Nach diesen kann jetzt gruppiert, gefiltert und über Insights in Diagrammen genutzt werden.
-
Mit dem Button + New view können weitere alternative Sichten als Table oder Bord hinzugefügt werden.
Der Inhalt und das Aussehen der Views können über den kleinen ▼ neben dem View-Namen angepasst werden. Anpassungsmöglichkeiten wären: gruppieren, sortieren, filtern, extra Spalten und weiteres. -
Vorschläge für hilfreiche Views:
-
Overview: Table view, Gruppierung: Iteration
-
Current Iteration: Board view, Filter:
iteration:@current
-
Current & Next Iteration: Table view, Filter:
iteration:>=@current
, Gruppierung: Iteration, Sortierung: Status -
Backlog: Table view, Filer:
no:iteration
-
-
Im Projekt oben rechts auf … klicken
-
Den Menüpunkt Workflows auswählen
-
Hier kann (noch etwas eingeschränkt) das automatische Verhalten der Issues mit dem wechsel des zugehörigen Status angepasst werden.
Hinweise zu Meilensteinen (Milestone) in GitHub
-
Neue Meilensteine werden in der Issue-Ansicht (Reiter Issues) → Milestones über den Button New milestone abgelegt:
-
Title: bspw. Inception Phase
-
Due date (optional): geplantes Ende
-
Description (optional): Beschreibung
-
-
In der Meilensteinübersicht bzw. Detailansicht können wahlweise die offenen oder geschlossenen Meilensteine bzw. enthaltenen Issues angezeigt werden.
Aufgabe 3.1 - Üben
-
Erstellen Sie in Ihrem privaten Repository
htwd-se-example-project
eine User Story als neue Issue mit dem Labeluser story
an. Bspw.:Tabelle 5. User Stories Nr. Title Description 1
Dokumentation wie Code behandeln
Als Entwickler möchte ich die Dokumentation wie Code behandeln, damit ich mich nicht in neue Tools einarbeiten muss.
-
Erstellen Sie drei Work Items als neue Issues mit dem Label
work item
, wovon sich die zwei ersten auf die vorher angelegte User Story beziehen sollen. Legen Sie sich jeweils als zugeordneter Nutzer fest. Schauen Sie sich Ihre User Story (Issue) an, ob die Referenzen aufgetaucht sind. Bspw.:Tabelle 6. Work Items Nr. Title Description 1
Dateien der Dokumentation erstellen
Erstellen der Dateien Dokumentation.adoc, Software.inc.adoc und Mitglieder.inc.adoc im AsciiDoc-Format im Ordner docs.
2
Ausgelagerte Dateiinhalte einbinden
Einbinden (include) der Dateien für die Software und Mitglieder in die Dokumentation.
3
Datei .gitignore anlegen
Einrichten des Git-Repositories zum Ignorieren von HTML- und PDF-Dateien.
-
Erstellen Sie ein neues Projekt Projektplanung: Beispiel.
-
Nehmen Sie Ihre eben erstellten Work Items (nicht die User Story) in das Projekt auf.
-
Erstellen Sie ein neues Feld Complexity (numeric) und ein neues Feld Iteration mit einem wöchentlichen Zyklus.
-
Vergeben Sie jedem Work Item einen Complexity Score.
-
Weisen Sie zwei Work Items der aktuellen Iteration zu.
-
Richten Sie sich zwei Sichten: Overview und Current Iteration ein.
-
Overview: Table view, Gruppierung: Iteration
-
Current Iteration: Board view, Filter:
iteration:@current
-
-
Erstellen Sie im Projekt (Sicht: Overview) ein Work Item als neue Issue mit dem Label
work item
und nehmen Sie es anschließend in Ihre aktuelle Iteration auf:Tabelle 7. Work Items Nr. Title Description 4
Termin mit Auftraggeber vereinbaren
Terminanfrage per E-Mail oder Telefon an den Auftraggeber.
-
erstes Meeting mit dem Auftraggeber
-
Vorstellung des Teams
-
-
Schließen Sie ein Work Item (Issue) in der Issue-Ansicht (oder per Commit) und schauen Sie sich die Änderung im Projekt bzw. den enthaltenen Views (Sichten) an.
Hinweise für den Beleg
Für den Schwerpunkt der Work Item- und Iterationsverwaltung mit GitHub Issues/Projects sind durch die Fachaustausche in SE II einige ergänzende und alternative Tools von Studenten empholen worden:
-
GitHub Erweiterungen:
-
ZenHub, …
-
-
separate Aufgabenverwaltungen:
-
Jira, MeisterTask, Trello, …
-