Continuous Integration (ASSE)

Aus THM-Wiki
Wechseln zu: Navigation, Suche

Continuous Integration (Abkürzung CI; deutsch Kontinuierliche Integration) ist ein Begriff der Softwareentwicklung und bedeutet, dass nach jeder Änderung der Software das Projekt neugebildet und getestet wird. Dadurch ist zu jeder Zeit eine lauffähige Version des Projektes vorhanden. Der Begriff wird oft mit Extreme Programming in Verbindung gebracht.

Grundsätze

Aktionen von CI [1]

Die grundsätzliche Idee hinter CI ist es, dass jeder Entwickler frühzeitig seine Änderungen in die Versionsverwaltung hochläd (comitted). Das bedeutet auch, dass er große Änderungen auf viele kleine Änderungen aufteilt. Dadurch kann man leicht zu einer lauffähigen Version zurückgehen, falls das debuggen von Fehlern zu kompliziert wird. Der zweite wichtige Grundsatz beinhaltet, dass nach jeder Änderung automatisch das Gesamtsystem neu gebildet und getestet wird. So werden Fehler frühzeitig erkannt und können ohne großen Suchaufwand behoben werden.

Geschichte

CI wurde erst durch den Begriff Extreme Programming einer größeren Masse bekannt gemacht, welcher von Kent Beck erfunden wurde. Martin Fowler stellte noch einmal die Vorteile von CI dar und seitdem wird CI in immer mehr Projekten eingesetzt.

Voraussetzungen für CI

Versionierungstool

Damit CI durchgeführt werden kann, muss jeder Entwickler dieselbe Codebasis haben. Dazu ist ein Softwaretool nötig, welches die Versionsverwaltung des Repository betreut. In einem Projekt sollte es nur ein einziges Sourcecode-Repository geben, mit dem alle beteiligten Entwickler arbeiten. [2] In dieses Tool wird nach jeder Änderung eines Entwicklers eine neue lauffähige Version hochgeladen (comitted), da jeder Entwickler nur an seiner lokalen Kopie des Projektes arbeitet. Diese läd er auf seine lokale Festplatte runter (auschecken) und arbeitet lokal daran, bis er lauffähigen Code wieder comitted. In dem Repository werden ebenfalls alle für das Projekt relevanten Dateien abgelegt, wie Bilder oder Dokumentationen.

Automatische Tests

Danach wird die neue Version auf einem Build-Server automatisch neu gebildet und auf dem Zielsystem getestet. Dort werden Fehler frühzeitig erkannt und können ohne großen Aufwand beseitigt werden. Dazu müssen einheitlich definierte Tests durchlaufen werden, da alle Module getestet werden und nicht nur das abgeänderte Modul.

Damit auch kleine Änderungen eingecheckt werden, sollte die Zeit für Tests nicht zu lange sein.

Wenn die neue Version erfolgreich getestet ist, checken die anderen Entwickler die neue Codebasis aus und prüfen, ob ihre gerade vorgenommenen Änderungen auch mit der neuen Version funktionsfähig geblieben sind.

Informations-Weitergabe

Die Dokumentation der Integrationen und Änderungen von Version zu Version sollte von allen Beteiligten leicht einsehbar sein, damit alle mit demselben Stand der Codebasis arbeiten. Wenn eine neue Version erfolgreich getestet wurde, können alle beteiligten Entwickler per Mail darüber informiert werden. Damit sie auch immer mit einer aktuellen lokalen Kopie arbeiten können.

Vorteile

Es gibt einige Vorteile durch CI:

  • Fehler werden frühzeitig erkannt durch Unit-Tests
  • immer eine lauffähige Version vorhanden als Demo
  • Produktivität der Entwicklung wird gesteigert
  • Zusammenspiel der Teilsysteme wird zu jedem Zeitpunkt überprüft
  • Qualität des Systems nimmt zu

Des Weiteren besteht die Möglichkeit eine Abzweigung von dem Hauptpfad zu erstellen. In der Abzweigung können, ohne jeglichen Einfluss auf die Weiterentwicklung des Hauptpfades, Sachen ausprobiert werden, bei denen der Entwickler noch nicht sicher ist, ob es funktionieren wird.

CI ist die Grundlage für continuous delivery (kontinuirliche Auslieferung) und QA-Pipeline.

Softwaretools

Quellen

  1. [1]
  2. "Best Practice Software Engineering" S. 400 (siehe Literatur)

Literatur

A. Schatten, S. Biffl, M. Demolsky, E. Gostischa-Franta, Th. Östreicher, D. Winkler: "Best Practice Software-Engineering" Spektrum Akademischer Verlag, Heidelberg 2010, ISBN 978-3-8274-2486-0

S. Wiest: "Continuous Integration mit Hudson" dpunkt Verlag, Heidelberg 2011, 1. Auflage, ISBN 978-3-8986-4690-1

Weblinks

Mbyt88 10:01, 16. Feb. 2012 (CET)