Cubeware Business Intelligence Blog

Continuous Integration – die ideale Basis für zuverlässige Software

Die Abkürzung CI steht nicht nur für Corporate Identity. In der Softwareentwicklung steht CI für Continuous Integration. Dahinter verbirgt sich ein erprobtes Mittel zur Optimierung von Entwicklungsprozessen, um stabile und zuverlässige Software zu erstellen. Integration beschreibt das Einpflegen von Codeänderungen Einzelner in eine zentrale Quellcodeablage. Dies macht absolut Sinn, erhöht sich doch mit steigender Entwicklerzahl und zunehmender Komplexität des Quellcodes unweigerlich die Fehlerwahrscheinlichkeit. Um Fehler frühzeitig zu erkennen, müssen Projekte fortlaufend, vollautomatisch durch eine Integrationsinstanz analysiert, getestet und archiviert werden.

Durch statische Codeanalysen wird sichergestellt, dass keine Speicherlecke durch fehlende Speicherverwaltungskommandos entstehen, nicht unnötig Objekte instanziiert und Redundanzen sichtbar gemacht werden.

Testgetriebene Entwicklung erzielt die gewünschte und erforderliche Testabdeckung durch automatisierte Unit-Tests, welche die Funktionalität der einzelnen Module innerhalb der Applikation validieren. Konsequent werden vom Entwickler zuerst die Testfälle und danach die Programmlogik implementiert. Ein Gesamttest der Applikation erfolgt erst, wenn die Funktionsweise seiner Einzelteile sichergestellt ist.

Periodisch werden automatisch Programmarchive aus dem integrierten und analysierten Code erzeugt. Die Häufigkeit ist individuell für die Projekte zu wählen. Beispielsweise kann es beim Commit des einzelnen Entwicklers stündlich oder täglich erfolgen. Die Ergebnisse der Builds werden klassifiziert als

  • fehlerfrei,
  • mit Warnungen beendet (Analyseprobleme), oder
  • fehlerhaft (Tests schlugen fehl).

Dieser Prozess wird fortlaufend protokolliert und erlaubt durch die gewonnenen Metriken, valide Aussagen über die Softwarequalität zu treffen. Alle Integrationsergebnisse sind für jedermann jederzeit direkt über eine Web-Maske einzusehen und sind Fundament für die teamübergreifende Kommunikation.

CI ist Mainstream geworden, und aufgrund des Erfahrungsschatzes gibt es keinen guten Grund, bei Softwareprojekten auf CI zu verzichten. Entwicklerteams profitieren von einer Auswahl an offenen und kostenlosen sowie proprietären Continuous-Integration-Lösungen am Markt.

CI bei Cubeware: Cockpit, Team Server und Common Components
Für unsere Windows-basierten Produkte nutzt Cubeware den „Team Foundation Server“ (TFS) von Microsoft als Integrationsplattform. Hauptaufgaben sind die zentrale Ablage des Quellcodes, der gesamte automatisierte Build-Prozess sowie die Verwaltung sämtlicher Arbeitspakete und das Issue Tracking. Des Weiteren werden die Setup-Pakete und Partnerversionen aus den erfolgreich getesteten und signierten Programmarchiven erzeugt.

Der aktuelle Status des Integrationsservers ist, neben den vom TFS bereitgestellten administrativen Masken, auch über eine In-House-Lösung namens „Cubeware Live Dashboard App“ einsehbar. Diese existiert als iOS App, Windows Store App und Web-App-Variante.

3 devices

In-House-Lösung „Cubeware Live Dashboard App“

Jederzeit lassen sich so alle relevanten Informationen über die aktuellen Integrationsbuilds und den erfolgten Commits abrufen. Ferner wird Einblick in sämtliche aktuellen Projekte über Slides, wie man sie aus Powerpoint kennt, gewährt.

BI-App
Die BI-App „Cubeware Mobile BI“ wird durch Apples Xcode Server für OS X Mavericks verwaltet. Der Code ist in einem zentralem „Git-Repository“ abgelegt und übers Intranet erreichbar.

bot

Sogenannte Bots sind für das jeweilige Produkt konfiguriert und übernehmen fortlaufende Analyse-, Test- und Archivierungstätigkeiten. Die erzeugten Versionen werden automatisch gegen iPhones und iPads unterschiedlicher Generationen und Betriebssystemversion geprüft. Auch die Integrationsmetriken des Xcode Servers sind als Website und innerhalb der „Cubeware Live Dashboard“-Apps erreichbar.

 

dashboards

Xcode Statusboard

 

Die Standard-Bücher zum Thema Continuous Integration finden Sie hier:

http://www.informit.com/store/continuous-integration-improving-software-quality-and-9780321336385
http://www.informit.com/store/continuous-delivery-reliable-software-releases-through-9780321601919

Lassen Sie uns doch Ihre Erfahrungen, Anregungen oder Fragen zu diesem Thema per Kommentar zukommen.

Wir freuen uns auf den Austausch!

 

Autor: Christian Deckert, Produktentwicklung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *