Agile Softwareentwicklung: Continuous Integration

Continuous Integration
Kurze Test-Zyklen und reibungslose Integration:
Die Basis für effizientes Arbeiten.

Was ist Continuous Integration?

Die agile Softwareentwicklung hat in den letzten Jahren an Popularität gewonnen und eine neue Art des Entwickelns ermöglicht. In diesem Zusammenhang ist auch Continuous Integration entstanden, geprägt von Martin Fowler. Ein Schlüsselelement des Ansatzes ist das regelmäßige Zusammenführen von Code-Änderungen in einem zentralen Repository, um Bugs frühzeitig zu erkennen und die Softwarequalität zu erhöhen.

Welche Mehrwerte schafft man damit?

Die tägliche Integration von Code-Änderungen /-Schnipseln der einzelnen Entwickler in einem zentralen Repository ist der wesentliche Bestandteil von Continuous Integration (CI). Dabei besteht der Vorgang meist aus automatisierten und menschlichen Komponenten zugleich, um Fehler zu vermeiden und die Softwarequalität zu verbessern. Darüber hinaus ermöglicht es eine bessere ad-hoc Rückmeldung zwischen den Entwicklern und reduziert die Anzahl paralleler Code-Änderungen, was zu einer insgesamt effizienteren Entwicklung führt. Probleme, die typischerweise beim Compilen des Codes zustande kamen, werden von Vorne herein vermieden.

Neben diesen Vorteilen auf der technischen Seite eines Produktes ermöglicht CI auch eine schnellere Darstellung des aktuellen Entwicklungsstandes gegenüber Kunden und Vorgesetzten. Eine knappe Präsentation des Produktes und die Möglichkeit, Vorschläge schnell in die reelle Umgebung zu integrieren kann von Vorteil sein, gerade weil die allgemeine Kreativität und das Arbeiten an einem Produkt stets leichter fällt, wenn z. B. eine Website angesehen werden kann und nicht nur der Code, der als Software mal eine Website wird.

Wie funktioniert Continuous Integration?

Das Herzstück der gemeinsamen Arbeit stellt die Codebasis dar, in die alle Beteiligten ihre Anteile integrieren. Vor jeder Integration muss der entsprechende Code getestet werden, dieser Schritt wird meist automatisiert durchgeführt. Eben diese Test-Zyklen sollten möglichst kurz gehalten werden, um eine häufige Integration zu fördern. Gleichzeitig ist es sinnvoll, solche Tests in einem möglichst engen Abbild der späteren Anwendungsumgebung durchzuführen. Zusätzlich zu alledem ist es wünschenswert, dass auch andere Personen als das Entwicklerteam Zugriff auf den aktuellen Stand der Software haben, beispielsweise die Qualitätssicherung.

Herausforderungen bei der Umsetzung

Trotz verschiedener Vorteile ist CI natürlich nicht frei von Hindernissen, die überwunden werden müssen. Ganz grundlegend stellt die Arbeitsweise im Rahmen von Continuous Integration eine starke Veränderung zu „klassischen“ Entwicklungsvorgängen dar. Ein Team, das erstmalig CI als Methode anwenden möchte, muss sich diesen Unterschieden bewusst sein und Abläufe vorher einüben. Zudem braucht es unter Umständen höhere Serverkapazitäten für Testumgebungen, die Codebasis et cetera. Diese initial mit Mehraufwand verbundenen Umstände können am Ende jedoch zu besseren, hochqualitativen Ergebnissen führen.

Gängige Tools für CI

Es gibt inzwischen eine Vielzahl an Softwaretools, die CI ermöglichen bzw. unterstützen. Bei Studio Fluffy setzen wir vor allem auf Github Actions und Azure, weil diese am besten in unsere Infrastrukturen passen. Auch AWS bietet einen Dienst für CI an, ebenso der Open Source Anbieter Jenkins. Interessierten stehen also eine Menge Möglichkeiten zur Verfügung.

Fazit – Continuous Integration als Lösung

CI als Entwicklungsmethode zielt im Wesentlichen auf eine höhere Ergebnisqualität bei möglichst flexibler Arbeitsstruktur ab. Ganz im Sinne der agilen Softwareentwicklung werden Bausteine schnellstmöglich kombiniert, um arbeitsteiliges Arbeiten optimal umzusetzen. Continuous Integration verkörpert sehr gut die Grundideen der agilen Softwareentwicklung: schnellstmöglich ausführbare Software, häufige Kundenabstimmung, iteratives Vorgehen und selbstorganisierte Teams. Bei Studio Fluffy legen wir großen Wert auf enge und regelmäßige Absprachen, intern wie extern, denn nur so erschaffen wir im interdisziplinären Team individuelle Lösungen, die unsere Kunden überzeugen.