Topics Ci cd Kontinuierliche Integration in der Agile-Entwicklung

Kontinuierliche Integration in der Agile-Entwicklung


Erfahre mehr darüber, wie kontinuierliche Integration und Agile-Methodiken zusammenspielen.

Was bedeutet Agile-Entwicklung?

Der Begriff „Agile-Entwicklung“ beschreibt eine Ansammlung von Methodiken, die sich auf die iterative Entwicklung und Zusammenarbeit zwischen selbstorganisierten Teams konzentrieren. Agile-Methodiken basieren auf disziplinierten Projektmanagementprozessen und der Zusammenarbeit zwischen Teams oder sogar Gruppen von Teams.

Es gibt viele Agile-Frameworks, aber alle Agile-Entwicklungsprojekte verwenden irgendeine Art von kontinuierlicher Entwicklung, wie z. B. kontinuierliche Planung, kontinuierliche Tests und kontinuierliche Integration (CI).

Mit CI bauen Entwickler(innen) allmählich ein stabiles System auf, indem sie mit kleinen Teilaufgaben und in kurzen Zyklen arbeiten. Dies bezeichnet man als Lean-Konzept. Die kontinuierliche Integration unterstützt Teams, die in Agile-Frameworks mit CI/CD-Pipelines arbeiten, die Builds, Tests und Bereitstellungen automatisieren. Während Agile in das Projekt- und Portfoliomanagement (PMM) fällt, ist CI der Prozess, mit dem Softwareentwicklungsteams Änderungen implementieren.

Grundsätzlich sind Scrum und andere Agile-Methodiken ein Management-Framework und keine Software-Engineering-Verfahren. Die Teams müssen Agile-Frameworks mit bewährten Methoden für Software Engineering kombinieren, um die besten Ergebnisse zu erzielen. Durch kontinuierliche Integration wird die iterative Entwicklung von Agile in die Tat umgesetzt.

Agile-Kernkonzepte

Das Agile-Projektmanagement ermöglicht komplexe Projekte, indem es sich auf inkrementelle Veränderungen konzentriert. Diese iterative Methodik besteht aus sechs Kernelementen, mit denen Fortschritte nachverfolgt und das Produkt erstellt werden.

  • User Story: Beschreibt die Ziele für das Produkt aus der Sicht der Benutzer(innen).

  • Roadmap: Eine allgemeine Ansicht der Anforderungen, die zur Erfüllung der Produktvision erforderlich sind.

  • Backlog: Anforderungen an das Projekt nach Priorität.

  • Release Plan: Ein Zeitplan für die Veröffentlichung eines funktionierenden Produkts.

  • Sprint/Iteration: Die User Stories, Ziele und Aufgaben, die mit dem aktuellen Sprint verknüpft sind.

  • Inkrement: Das Arbeitsergebnis, das den Stakeholdern am Ende eines Sprints präsentiert wird.

Agile-Methodiken können in ihrem Ansatz variieren, aber sie bleiben diesem Modell treu. In GitLab stimmen die Projektmanagementfunktionen mit diesen Agile-Kernkonzepten überein.

Agile-Konzept GitLab-Funktion
User Stories Issues
Aufgaben Aufgabenlisten
Epics Epics
Punkte/Schätzungen Gewichtungen
Backlog Ticketlisten und priorisierte Labels
Sprints Meilensteine
Abarbeitungsdiagramme Abarbeitungsdiagramme
Agile Boards Issue-Übersichten

CI-Workflow in Agile

Git ist die beliebteste Methode für die Versionskontrolle und kann für Agile-Teams von Vorteil sein, da sie eine dezentrale und gleichzeitige Entwicklung ermöglicht. Tools wie GitLab erstellen einen Prozess um Code herum, hauptsächlich durch Tickets und Merge-Requests.

Ein Merge Request (MR) ist eine Möglichkeit, vorgeschlagene Änderungen am Quellcode zu visualisieren und gemeinsam zu bearbeiten. Ein CI-Workflow für Teams, die eine Agile-Methodik verwenden, würde Agile-Kernkonzepte sowie Commits, Merge Requests, Tests und Bereitstellungen umfassen.

Verwendung von Labels

Labels unterstützen Teams dabei, Epics, Tickets und Merge Requests zu filtern und zu verwalten. Für ein bestimmtes Projekt können Teams Labels wie PlanungIn BearbeitungStaging, „Überprüft` usw. in ihren eigenen Listen in der Issue-Übersicht nutzen.

Teams können Issues gemeinsam bearbeiten. Sobald über die nächsten Schritte entschieden wurde, können Entwickler(innen), die einem Issue zugewiesen sind, mit der Arbeit beginnen und das Label Planung entfernen und sie durch das Label In Bearbeitung ersetzen.

Code- und Commit-Änderungen

Entwickler(innen) können in ihrer Commit-Nachricht auf das entsprechende Issue verweisen. Dann pushen sie ihre Commits in einen Feature-Branch und erstellen einen Merge Request. Der Code wird erstellt und getestet, und ein Teammitglied kann die Codeänderungen überprüfen.

Verwenden von Issue-Übersichten zwischen Teams

Sobald ein Team seine Review abgeschlossen hat, kann es das Label In Bearbeitung entfernen und das Issue in die Issue-Übersicht Staging verschieben. Bei diesem Schritt kann das Bereitstellungsteam automatisch darüber informiert werden, dass das Issue bereit ist.

Code bereitstellen

Sobald der MR genehmigt wurde, kann er mit dem main-Branch zusammengeführt und das Issue geschlossen werden.

Warum CI für die Agile-Entwicklung unerlässlich ist

Kontinuierliche Integration treibt Entwicklungsteams dazu an, kleine, häufige Änderungen zu implementieren und Code anhand von Repositories zur Versionskontrolle zu validieren. Tatsächlich kann CI als Säule des Agile-Prozesses betrachtet werden. CI ist so weit verbreitet, dass CI und Agile häufig synonym verwendet werden. Während beide Konzepte in ähnlicher Weise kleine, iterative Veränderungen verwenden, sind sie nicht identisch.

Agile basiert auf der Erwartung, dass Entwickler(innen) kleine inkrementelle Updates für ein Produkt oder einen Dienst bereitstellen können. In der Praxis wird dies nur dann erreicht, wenn eine Organisation sich zur CI/CD-Automatisierung verpflichtet. Agile-Frameworks ermöglichen es Teams, schnell zu handeln und unabhängig zu arbeiten. Wenn das Unternehmen jedoch CI/CD nicht aktiv verwendet, sind agile Methodiken im Wesentlichen nutzlos.

Das Ziel der Agile-Entwicklung besteht darin, am Ende jedes Sprints über ein Arbeitsergebnis zu verfügen. Während das Produkt jeden Sprint durchläuft, wird es exponentiell verbessert. Mit CI werden am Produkt vorgenommene Codeänderungen kontinuierlich mit anderen Änderungen verglichen. Kontinuierliche Integration und kontinuierliches Testing stellen sicher, dass Teams dieses Arbeitsergebnis liefern können, da Fehler und potenzielle Probleme erkannt werden, bevor sie die Endbenutzer(innen) erreichen.

Fazit

Kontinuierliche Integration (CI) ist für die Agile-Softwareentwicklung von entscheidender Bedeutung, da sie den Entwicklungsprozess verbessert, indem sie kleine, iterative Änderungen ermöglicht und die Code-Stabilität sicherstellt. Mit Tools für die kontinuierliche Integration können Teams Builds, Tests und Bereitstellungen automatisieren und so den gesamten Entwicklungsworkflow verbessern. Diese Integration erleichtert nicht nur effektive Code Reviews, sondern sorgt auch für eine stabile Produktivumgebung.

Durch die Einbettung von CI in Agile-Methodiken erreichen Unternehmen eine überlegene Softwarequalität und einen nahtlosen kontinuierlichen Integrationsprozess, was letztendlich zu einer besseren DevOps-Leistung und einer qualitativ hochwertigen Softwarebereitstellung führt.

Bist du bereit?

Sieh dir an, was dein Team mit einer einheitlichen DevSecOps-Plattform erreichen könnte.