Definition „Kontinuierliche Integration“ Was ist Continuous Integration?
Software-Entwicklung erfolgt immer häufiger in Teams, die ihre Arbeitsergebnisse in einer Build-Umgebung zusammenführen müssen. Continuous Integration oder CI sorgt dafür, dass neue Programmteile sofort getestet und zusammengeführt werden können, statt dies beispielsweise nur einmal nachts zu tun.

Programmierung & Kompilierung: ein Blick zurück
Softwareprogramme bestehen in der Regel aus einzelnen Modulen. Entsprechend gestaltet sich die Vorgehensweise bei der Softwareentwicklung. Häufig wird das Gesamtprojekt analog zu diesen Modulen von mehreren Teams parallel vorangetrieben.
Die vorgenommenen Erweiterungen und Änderungen am Programm wurden in der Vergangenheit häufig in Form eines „Tagewerks“ erstellt. Die Zusammenführung der isoliert in den Software-Entwicklungsteams erarbeiteten Änderungen wurden in der Regel nur einmal täglich, in einer Kompilierung auf dem „Build“-Server zusammengeführt.
Erst im Anschluss erfolgten die Tests der neuen Funktionsumfänge anhand der erweiterten Gesamtcodebasis. Diese tradierte Vorgehensweise bei der Programmierung birgt große Risiken. Wird neu geschaffener Code nicht stetig integriert, so wird fehlerhafter Code zu spät erkannt. Die Folgen sind zeitaufwendige Rückkopplungsprozesse und ein hoher Zeitaufwand bei der Bug-Beseitigung.
Vor der Einführung der kontinuierlichen Integration (CI) erwies sich auch das Warten einzelner Teams auf die Fertigstellung anderer benötigter Software-Teile aus anderen Teams als störend und die Entwicklungskosten belastend. Tauchten beim nächtlichen Kompilieren auf dem Build-Server Schwierigkeiten auf, so führte der Zeitaufwand für die Problembehebung am Folgetag zu weiteren Störungen des Entwicklungs- und Testablaufs.
Gängige Praxis in der Software-Entwicklung
Die in modernen Unternehmen eingesetzte Continuous Integration bezeichnet die kontinuierliche Integration von Softwarekomponenten in die Gesamtcode-Basis eines Programms. Die Vorteile dieser Arbeitsweise in überschaubaren Schritten liegen zum einen im kontinuierlichen Arbeitsfluss, zum anderen in der Möglichkeit der frühzeitigen Fehlererkennung. In der Summe ergeben sich Vorteile bei Arbeitseffizienz und Software-Qualität.
Die Arbeitsweise unterscheidet sich signifikant vom oben beschriebenen, traditionellen Prozess. Bei der Arbeit nach den Regeln des CI-Prozesses teilen die Teams und Programmierer den von ihnen erstellten Code sowie die durchgeführten Tests.
In der Praxis bedeutet dies, dass die in kleineren Schritten vorgenommenen Änderungen regelmäßig zusammengeführt werden. Die Einspeisung erfolgt in ein unterteiltes Code Repository. Auf diesem Wege werden Versionskontrollen durchgeführt, indem ein automatisierter Build-Prozess die jeweils aktuellste Code-Version aus dem Repository übernimmt.
Straffung des automatisierten Entwicklungsablaufs
Die Vorteile dieser automatisierten Ablauforganisation liegen auf der Hand und lassen sich aus der Praxis folgendermaßen charakterisieren:
- Regelmäßige Übergabe des neu geschaffenen Codes;
- kategorisierte Entwicklungstests;
- Einrichtung eines kontinuierlichen "Feedback-Mechanismus";
- direkte Ausführung der "Builds".
Dank des kontinuierlichen Ablaufprozesses und der Überschaubarkeit der kleinen Schritte werden Fehler bereits in einem sehr frühen Stadium lokalisiert. Sie können dann sofort, mit überschaubarem Kosten- und Zeitaufwand behoben werden. Zweifelsohne partizipieren Projektmanagement wie auch die einzelnen Software-Entwicklungsteams von den regelmäßigen Statusreports und der optimierten Projektübersicht.
(ID:45166913)