Entwicklungsabläufe - sshucks/cvmatcher GitHub Wiki
Definition von Entwicklungsabläufen
Zweck und Überblick
Ein klar definierter Entwicklungsablauf ist entscheidend für den Erfolg und die Effizienz eines Softwareprojekts. Er standardisiert die Art und Weise, wie Codeänderungen eingebracht, überprüft und in die Hauptentwicklungslinie integriert werden. Ein gut durchdachter Ablauf fördert die Zusammenarbeit im Team, reduziert Fehler, verbessert die Codequalität und sorgt für eine reibungslosere Freigabe neuer Funktionen und Bugfixes. Ohne einen solchen Ablauf kann die Entwicklung schnell chaotisch und unübersichtlich werden, was zu ineffizienter Arbeit und potenziellen Konflikten führt.
Issues
Geplante/benötigte Features werden in Form von Github Issues definiert.
Beim Anlegen eines Issues sollt ein sprechender Titel, sowie eine detaillierte Beschreibung festgelegt werden. Issues können Mitarbeitenden zugeordnet werden, um die Arbeitsteilung zu erleichtern. Notwendige Infos und Updates sollten einerseits verbal kommuniziert werden (sofern möglich), und in den Kommentaren eines Issues festgehalten werden.
Sollte ein Feature mehrere Subtasks enthalten, können untergeordnete Issues erstellt werden.
Bugs
Für Bugs gibt es einen eigenen Bug-Tracker, der jedoch ebenfalls auf Basis der Issues arbeitet.
Wird ein Bug angelegt ist vor allem wichtig, dass eine genaue Beschreibung zur Reproduktion des Fehlers angehängt wird. Je nach Priorität des Bugs, können auch verschiedene Labels vergeben werden (backlog
- in Zukunft beheben, to triage
- sofort beheben)
Branching
Ein zentrales Element ist die Verwendung von Feature-Branches. Anstatt direkt in einer Hauptentwicklungslinie (main) zu arbeiten, wird für jede neue Funktion, jede Fehlerbehebung oder jede andere isolierte Aufgabe ein eigener Branch erstellt. Dieser Branch dient als isolierte Umgebung, in der Entwickler Änderungen vornehmen können, ohne die Arbeit anderer Teammitglieder zu stören oder die Stabilität der Hauptlinie zu gefährden. Sobald die Entwicklung einer Funktion abgeschlossen ist und alle Tests erfolgreich durchlaufen wurden, kann der Feature-Branch in die Hauptlinie integriert werden (durch einen Pull Request).
Um Codeänderungen nachverfolgbar zu machen, werden Feature-Branches in der Regel mit einem Issue im Projektmanagementsystem verbunden (GitHub Issues). Dies ermöglicht eine klare Zuordnung zwischen den implementierten Codeänderungen und der ursprünglichen Anforderung oder dem Bug. Der Name des Feature-Branches enthält idealerweise die Issue-ID oder eine kurze, deskriptive Zusammenfassung des Issues. Dies erleichtert die Navigation, das Verständnis des Zwecks eines Branches und die spätere Rückverfolgung von Änderungen.
Erstellen von Branches
Für das Projekt CVmatcher wird definiert, dass die main
-Branch als produktive Branch verwendet wird. Daher wird für die Entwicklung eine dev
-Branch basierend auf der main
-Branch erstellt. Für jedes Feature bzw. Bug-Fix (definiert in den Github Issues), wird basierend auf der dev
-Branch eine Feature-Branch erstellt.
Am einfachsten kann eine neue Branch direkt aus einem Github Issue heraus erstellt werden. Dazu muss der Issue geöffnet werden. In der rechte Side-Bar, unter Development kann eine neue Branch erstellt werden. Der Name der Branch wird automatisch mit der ID und dem Titel des Issues ausgefüllt. Diese Konvention kann prinzipiell beibehalten werden, sollte der Branch-Name jedoch zu lange sein, kann er gekürzt werden. Die ID sollte jedoch auf jeden Fall enthalten bleiben.
Wichtig: Feature-Branch bitte immer basierend auf der dev
-Branch erstellen.
dev
Zurückführen einer Feature-Branch auf Sobald ein Feature fertig entwickelt wurde, sollen die Änderungen in den dev
-Branch zurück geführt werden. Dies geschieht über Pull-Requests. Ein neuer Pull-Request kann über den Reiter Pull-Request
erstellt werden. Dabei ist auszuwählen, welche zwei Branches miteinander gemerged werden sollen. Die Ziel-Branch sollte in diesem Fall immer dev
sein.
Pull-Request müssen zusätzlich immer kontrolliert und akzeptiert werden.
Wichtig: Aufpassen welche Branch in welche gemerged wird.
dev
auf main
Zurückführen von Sind definierte Ziele erreicht, kann der stabile Source-Code von dev
auf main
übersiedelt werden. Dazu wird ebenfalls ein Pull-Request verwendet. Diese Prozedur dient dazu, immer beim Erreichen von größeren Zielen, einen lauffähigen Stand zu bewahren, der gegebenenfalls auch an den Auftraggeber ausgeliefert werden kann.