Entwicklung

Wenn Integration mit Agilität nicht Schritt hält

30.06.2011
Von Uwe Bloch

Check-in? Spätestens abends

Ein automatisiertes Feature, das vor allem die Software- und Integrationsqualität steigert, ist beispielsweise Continuous Integration: Alle Entwickler checken ihre lauffähigen Sourcen regelmäßig in die Versionsverwaltung ein, um nicht nur die Funktion einer Software, sondern auch ihre Bau- und Verteilbarkeit kontinuierlich zu prüfen. Nach jeder Änderung oder auch einmal jede Nacht startet dann die automatisierte Erzeugung der neuen Software-Builds, die anschließend, ebenfalls automatisch, nach einem vorgegebenen Schema versioniert und im Software-Repository abgelegt werden. Das Deployment auf die vordefinierten Umgebungen kann dann manuell, automatisch oder zeitgesteuert erfolgen - für ein unterbrechungsfreies Testen in der Regel über Nacht. Morgens erhält jeder Entwickler in detaillierten Reports Aufschluss über den Status seiner Arbeit. Integraler Bestandteil ist Continuous Integration unter anderem beim so genannten Extreme Programming (XP).

Lieferung nach Standard

Lässt ein Unternehmen seine Software von einem agil ausgerichteten Dienstleister entwickeln, sollte es zumindest die Softwareannahme so weit wie möglich automatisieren: Der Lieferant legt seine Artefakte in einem definierten Zustand am vorgesehenen Ort bei seinem Kunden ab, entweder als Sourcen in der Versionsverwaltung oder in Form von Installationspaketen im Binary-Format. Ebenfalls in standardisierter Form übergibt er die Konfigurationen für Applikationen sowie die Basistechniken. Nach der Ablage stößt der interne Release-Manager den Annahmeprozess an, Software- und Installationsartefakte werden automatisiert zu einem installierbaren Paket zusammengebaut. Danach erfolgt das Test-Deployment auf eine virtuelle Umgebung mit anschließendem "Smoke Test" (erster Probelauf). Sind alle vier Schritte mit positivem Ergebnis abgeschlossen, wird die Annahme erklärt, und die Weiterverarbeitung in den nachfolgenden Teststufen kann beginnen.

Bereits die Automatisierung der einzelnen Prozessschritte erhöht die Effizienz enorm, was besonders in Bezug auf die kurzen Iterationszyklen der agilen Entwicklung von Bedeutung ist. Darüber hinaus ist jedoch eine noch wesentlich komfortablere Lösung möglich: ein einziger automatisierter Ablauf von der Annahme über das Deployment bis zum Regressionstest mit anschließendem Reporting. Voraussetzung sind allerdings sehr klare, absolut durchgängige Standards, damit der Prozess nicht ungeplant ins Stocken gerät. Vor allem bei den Tests sollte zudem vorab geprüft werden, wo sich die Automatisierung wirklich lohnt, denn meist gilt in diesem Bereich das Pareto-Prinzip: Etwa 80 Prozent lassen sich sinnvoll automatisieren. Bei den restlichen 20 Prozent ist dagegen die Änderungsfrequenz so hoch, dass manuelles Testen die effizientere Lösung ist.

Build-Systeme

Auf der Build-Ebene reicht in der Regel ein einziges Tool aus, um alle Anforderungen abzudecken: Eine intelligente und übersichtliche Automatisierung und Standardisierung lässt sich hier beispielsweise mit Tools wie "AnthillPro" oder "Bamboo" erzielen.

Mit "Hudson" existiert hier zudem ein sehr prominenter Vertreter aus der Open-Source-Gemeinde, der sich besonders aufgrund seiner einfachen Installation und Konfiguration immer größerer Beliebtheit erfreut.