Softwareentwicklung: Automatisierung steigert Qualität

SoftwareDigitalisierung heißt zuallererst: Anders denken lernen. Die digitale Transformation braucht eine Unternehmenskultur, in der sich Hierarchien zugunsten von Mut und Kreativität auflösen. Denn nur so lässt sich die wachsende Dynamik des Marktgeschehens innerhalb des Unternehmens adäquat abbilden. Natürlich muss auch die Softwareentwicklung mit dieser Dynamik Schritt halten.

Statt großer, zeit- und kostenintensiver Softwareeinführungen ist agile Entwicklung mit vollautomatisierten Prozessen gefragt. Zu den Ansätzen, die gut in das schnelllebige Umfeld der Digitalisierung passen, gehören Entwicklungsmethoden wie Continuous Integration, Delivery und Deployment. Mit ihnen lassen sich Software-Qualität und Echtzeitfähigkeit gewinnen.

Anzeige

Da Ziel ist klar: Es geht darum, den Kunden beziehungsweise Anwender durch die schnelle und laufende Auslieferung von Software in die Lage zu versetzen, seine Prozesse zu verbessern und Wertschöpfung zu betreiben. Das Ganze in hoher Qualität und schnell. Um das konsequent umzusetzen, braucht es vor allem Automatisierung. Und die ist mit neuen Entwicklungsansätzen wie Continuous Integration und Delivery zu erreichen. Unternehmen wie Google, Amazon oder Netflix setzen längst auf diese Methoden, um ihren Kunden laufend neue Features zur Verfügung zu stellen.

Kurze Entwicklungszyklen (Sprints) kennzeichnen agile Ansätze wie Scrum und unterstützen die effiziente Entwicklung von Software. Ergebnisse sind schneller sichtbar. Der Kunde wird in den Entwicklungsprozess mit eingebunden, sich verändernde Anforderungen werden schnell in die Entwicklung einbezogen. Die Werkzeuge, mit denen sich agile Entwicklung konsequent über den gesamten Prozess hinweg umsetzen lässt, heißen Continuous Integration und Continuous Delivery. Denn sie sparen Zeit.

Continuous Delivery ist die logische Weiterentwicklung von Continuous Integration. Bisher wurden mit Continuous Integration einzelne Module automatisch in die Software integriert. Continuous Delivery hingegen verfolgt das Ziel, automatisch tatsächlich lieferbare Softwarepakete zu bauen, die man auf jedes beliebige System aufspielen kann.

Abgrenzung der Begriffe Continuous Integration, Delivery & Deployment.

Bild 1: Abgrenzung der Begriffe Continuous Integration, Delivery & Deployment. (Copyright: doubleSlash)

Automatisierte Tests erhöhen die Software-Qualität

Entscheidender Faktor dabei ist vor allem die Automatisierung der Tests: Der Entwickler spielt seinen Code ins sogenannte Code-Repository ein – ein zentraler Server, auf dem der Programmcode liegt. Nun durchläuft der Code die sogenannte Continuous Delivery Pipeline, in der Prozesse wie Akzeptanz-, Kapazitäts- und weitere Tests automatisiert ablaufen. Ist die Software gut, kann sie direkt automatisch geliefert werden. Tauchen Fehler auf, werden sie direkt an den Programmierer zurückgemeldet und von ihm behoben (Test-Driven-Development). Anschließend durchläuft der Code die Pipeline erneut. Das Ergebnis ist qualitativ hochwertige Software, die laufend geliefert werden kann. Das wäre mit einer manuellen Prozesskette nicht in dieser Effizienz umsetzbar.

Sicher ist: Continuous Integration, Delivery und Deployment machen den Entwicklungsprozess effizienter. Neue Funktionen kommen so schneller an den Markt und sind im Idealfall sogar in Echtzeit verfügbar. Aber nicht nur die Geschwindigkeit von Entwicklung und Lieferung, auch die Qualität der Software steigt. Dafür sorgen die automatisierten Tests, die den Entwicklungsprozess ständig begleiten. Während bei herkömmlichen Softwareprojekten Tests erst am Ende eines Releases durchgeführt werden, integriert Continuous Delivery das automatisierte Testen als festen Bestandteil in die komplette Softwareentwicklungs-Pipeline. Klar, dass sich die Time-to-System dadurch enorm verkürzt.

Manuelle Tests werden effizienter

Natürlich kann auch bei Continuous Delivery nicht immer vollständig auf manuelle Tests verzichtet werden. Allerdings hat die Software, wenn manuell getestet wird, schon so einen guten Stand, dass diese Tests wesentlich effizienter sind als in herkömmlichen Entwicklungs-Szenarien. Durch die kontinuierlichen Feedbackschleifen zurück in die automatisierten Tests erhöht sich der Automationsgrad sukzessive, der manuelle Aufwand beschränkt sich auf ein Minimum. Damit haben die Fachbereiche mehr Zeit für ihre eigentlichen Aufgaben.

Doch nicht nur die Effizienz und Qualität steigen, Continuous Delivery macht die Arbeit der Entwickler wesentlich einfacher. Sie müssen nicht wochenlang warten, bis QS-Schleifen durchlaufen sind – das Entwicklungssystem liefert kontinuierlich direktes Feedback. So lassen sich Fehler wesentlich schneller beheben, denn wenn das Feedback über einen Bug kommt, sind die Entwickler gedanklich noch im Code drin und müssen sich nicht nach Wochen wieder neu reindenken.

Hinzu kommt, dass auch das Projektrisiko sinkt, weil es immer einen funktionierenden Softwarestand gibt. Wer mit Continuous Delivery arbeitet, kann das Deployment in der Regel sehr entspannt angehen. Wurde früher enorm viel Aufwand getrieben, ist es mit Continuous Delivery möglich, einen neuen Softwarestand in kürzester Zeit zu deployen. 

Softwareentwicklungsprozess mit Continuous Integration & Delivery.

Bild 2: Softwareentwicklungsprozess mit Continuous Integration & Delivery. (Copyright: doubleSlash)

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.

Initialaufwand lohnt sich

Ehe das Continuous Delivery Gold zum Glänzen kommt, ist natürlich ein gewisser Initialaufwand notwendig: Die Pipeline muss aufgesetzt und automatisierte Tests erstellt werden. Dieser Aufwand lohnt sich nicht in jedem kleinen Projekt. Wenn eine Software allerdings länger eingesetzt werden soll, macht sich das Ganze bezahlt, zum Beispiel wenn Change Requests anstehen. Spätestens hier spart man Zeit und Geld, da weniger Fehler produziert werden.

Hinzu kommt: Sind die automatisierten Tests einmal aufgesetzt, kann man sie immer wieder auch in anderen Projekten verwenden. Manuelle Tests hingegen kosten relativ viel Zeit und sind daher teuer. Und: Die sinkenden Kosten für die Anpassung verlängern die Lebensdauer einer Software erheblich. Auch das ist ein klarer Mehrwert.

Übrigens eignet sich Continuous Delivery nicht nur für agile Projekte, die Methode kommt ihnen aber von der Vorgehensweise sehr entgehen. In agilen Projekten wird man über kurz oder lang um einen Continuous Delivery Prozess nicht herum kommen, da in den Sprints ständig neue Software ausgeliefert werden muss. Agile Entwicklungsmethoden und Continuous Delivery passen deshalb besonders gut zusammen, weil der Kunde in den Prozess einbezogen wird und den Fortschritt der Software schnell sehen möchte. Doch die Methode entfaltet auch in klassischen Softwareprojekten durchaus Potenzial zur Effizienzsteigerung. Hier kann Continuous Delivery vor allem dazu dienen, innerhalb des Entwicklungsteams effizienter zu werden.

Wann überwiegen die Vorteile?

Deshalb gilt es auch bei Continuous Delivery wie bei jeder Methode abzuwägen, ob sie sinnvoll ist. Bei Kleinstprojekten oder einem Showcase, der nicht weiterentwickelt wird, kann der Initialaufwand zu hoch sein – die Methode kann ihre Vorteile nicht ausspielen. Hingegen ist der Einsatz von Continuous Delivery bei allen Softwarelösungen sinnvoll, die auf Langlebigkeit ausgerichtet sind, zum Beispiel wenn die Software weiterentwickelt werden soll oder schnell auf äußere Einflüsse reagieren muss.

Continuous Delivery konsequent umsetzen

Die nächste Evolutionsstufe der Softwareentwicklung ist das Continuous Deployment. Hat der Entwickler die Software fertig entwickelt, laufen die Prozesse in der Pipeline automatisch ab – vom Testing über Installation bis zum Rollout ab. Bei kleineren Funktionen können zwischen dem „Coden“ bis zur produktiven Installation unter Umständen gerade mal 15 Minuten liegen.

Wichtig ist, dass wie mit allen neuen Werkzeugen auch hier die richtige Anwendung gelernt werden muss. Continuous Delivery entfaltet seine Wirkung nur, wenn es gewissenhaft umgesetzt wird. Ein bisschen Continuous Delivery ist wie ein bisschen Scrum. Wer die Vorteile will, muss die Methode konsequent und richtig einsetzen. Das geht nur, wenn dafür ein Bewusstsein bei allen Beteiligten – Projektleitern, Entwicklern und Kunden – geschaffen wird.

Wir von doubleSlash arbeiten schon länger mit Continuous Integration, Delivery und Deployment. Der Wunsch nach Automatisierung in der Softwareentwicklung birgt aus unserer Sicht eine klare Chance zur Ver¬besserung. Umfangreiche Prozesse für das Erstellen von Software, wie sie früher üblich waren, bedeuten nicht automatisch, dass auch die Qualität der Software besser wird. Mit Continuous Delivery und Deployment gibt es effiziente neue Methoden, die uns Software schneller und mit deutlich höherer Qualität entwickeln lassen.

Klar ist: Wer bei der Digitalisierung vorne dabei sein will, kommt nicht umhin, seine Softwareentwicklung Schritt für Schritt zu automatisieren. Das Ergebnis sind mehr Effizienz und eine bessere Qualität. Wenn das keine Argumente sind.

Sebastian SturmSebastian Sturm ist Senior Software-Consultant und arbeitet seit 15 Jahren bei doubleSlash. Er hat umfangreiche Projekterfahrungen im Umfeld der Logistik und Automobilbranche. Seine langjährige Expertise in Infrastruktur-Planung, Continuous Delivery, Java EE, Webservices, IoT und DevOps bringt er in zahlreiche IT-Projekten ein.

www.doubleslash.de
 

Anzeige

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.