Den Markt im Blick
Auf die Methodik kommt es anSoftwarehersteller müssen immer schneller auf neue Marktanforderungen reagieren. Ein zügiges zur Verfügung stellen von neuen Features oder Releases ist heute selbstverständlich und wird von Kunden erwartet. Das bedeutet aber auch wachsende Herausforderungen für die Softwareteams, die diese Anforderungen in die Produkte zeitnah implementieren müssen.
Im Laufe der Zeit wurden zahlreiche Methoden entwickelt, mittels derer sich Prozesse innerhalb der Softwareentwicklung automatisieren und optimieren lassen. Um mehr Produktivität und Agilität innerhalb eines Entwicklungsprozesses zu erreichen, hat sich in den letzten Jahren Continuous Integration (CI) als moderne Vorgehensweise etabliert.
CI ist mittlerweile eine bewährte und zuverlässige Methode zur Optimierung einer agilen Softwareentwicklung. Dabei geht es darum, dass der neu erstellte Quellcode täglich vollständig gebaut und getestet wird. Dies alles soll automatisiert und möglichst ohne manuelle Interaktion geschehen. Durch die entsprechende Frequentierung des Prozesses können Integrationsprobleme rechtzeitig erkannt und bearbeitet werden. Um diese Automatisierung zu erreichen, sind Prozesse, und vor allem eine geeignete Infrastruktur, notwendig.
Wie funktioniert Continuous Integration?
Continuous Integration besteht aus mehreren Elementen, die in einem abgestimmten Zusammenspiel zum gewünschten Gesamtergebnis führen. Voraussetzung dafür, dass Continuous Integration funktioniert, sind folgende Komponenten:
- Source Code Control-System,
- Build-System und Build-Automatisierung,
- Test-System und Test-Automatisierung,
- Reporting Funktionalitäten.
Ausgangspunkt für Continuous Integration sind Änderungen am Quellcode, die Entwickler an einem Produkt vornehmen. Diese Änderungen oder Erweiterungen werden dabei in ein System der Versionsverwaltung (Source Code Control-System) übergeben. Im nächsten Schritt wird der aktuelle Quellcode zu fest vorgegebenen Zeitpunkten aus dem Source Code Control-System in das Build-System übertragen.
Den Vorgang der Kompilierung (Erzeugen von Binär EXE- oder DLL-Dateien aus Quellcode) übernehmen dabei verschiedene Werkzeuge auf dem Build-System. Dies geschieht immer in Abhängigkeit, z.B. für welche Plattform (Windows, Linux, Solaris oder AIX) binäre Dateien erstellt werden müssen. Letztendlich werden durch diesen Vorgang aus dem Quellcode Setup-Pakete automatisiert erstellt.
System ohne FallstrickWenn dieser Vorgang erfolgreich war, geht es weiter in die nächste Phase. Hierbei werden erstellte Pakete automatisiert auf verschiedene Plattformen und Testserver verteilt, Tests durchgeführt und deren Ergebnisse ausgewertet. Im letzten Schritt werden schließlich die Build- und Test-Ergebnisse mittels Reporting Funktionalitäten (Mail, Web-Dashboard und Build-Monitor) an das Entwicklungsteam weitergegeben. Sollten Fehler aufgetreten sein, werden diese im Rahmen des Reportings dokumentiert und können so entsprechend behoben werden. Reporting Funktionalitäten sind somit von wesentlicher Bedeutung, da sie die Verlässlichkeit und Kontinuität innerhalb des Entwicklungsprozesses sichern.
Welche wesentlichen Vorteile bietet also Continuous Integration?
- Geringeres Risiko beim Erstellen neuer Releases
- Transparenz und Verlässlichkeit innerhalb des Entwicklungsteams
- Steigerung der Softwarequalität
- Kürzere Produktzyklen
Fazit
Continuous Integration ist ohne Zweifel zu einem zentralen Thema der Softwareentwicklung geworden. Bei GBS wird Continuous Integration seit Jahren gelebt und umgesetzt. Dabei setzen wir konsequent auf Standard Continuous Integration-Werkzeuge aus dem Open Source-Bereich. Eigene Anpassungen und insbesondere die Einbindung von Virtualisierungsmöglichkeiten runden den Continuous Integration-Prozess innerhalb der GBS ab. Dieser wurde mit der Zeit immer weiter ausgebaut.
Heute haben wir einen durchgängigen Prozess, der nicht nur täglich unsere Produkte für verschiedene Standorte und Plattformen erstellt, sondern darüber hinaus auch mehrere tausend Testfälle automatisiert durchläuft. Davon profitieren wir aufgrund der resultierenden Dynamik und unsere Kunden durch agile Produktzyklen.