Start > Dienstleistungen > Entwicklung > Agile Softwareentwicklung

Agile Softwareentwicklung

Die agile Softwareentwicklung steht für mehrere Prinzipien so wie die Ziele den Entwicklungsprozess flexibler zu gestalten und die Qualität des Produkts zu steigern.

Damit die Ziele der agilen Softwareentwicklung unter Berücksichtigung derer Prinzipien erreicht werden, haben sich verschiedene Methoden und Prozesse in den vergangenen Jahren entwickelt.

Ein agiler Prozess namens Kanban

Kanban wurde ursprünglich in den 1970ern von Toyota entwickelt. Der Auslöser für das Projekt waren vermutlich die scheinbar ‚normalen‘ Lagerbestände innerhalb des Fertigungsprozesses. Eine wirtschaftliche Betrachtung assoziiert Lagerbestand immer mit Kosten die eine direkte Auswirkung auf Preis und Wettbewerbsfähigkeit haben. Um die Kosten zu senken und die Position im Wettbewerb auszubauen mussten die Lagerbestände reduziert werden. Im Mittelpunkt von Kanban steht der stetige Fluss der Produktion.

Überträgt man dieses Prinzip auf die Softwareentwicklung stellt man fest das (Lager)Bestände auch hier einen großen Impact auf Wettbewerbsentscheidende Faktoren haben. Im Rahmen unserer Softwareentwicklungsprozesse erweitern wir das Grundprinzip von Kanban um Ansätze des Risikomanagement sowie einigen Prinzipien die Ihren Ursprung in der Lean Production haben.

Kern des Softwareentwicklungsprozesses ist hierbei das Kanban-Board. Für jede Aufgabe ist ein ‚Kärtchen’ zu erstellen (digital oder physical), dass anschließend seinen Weg durch das mehrspaltige untergliederte Board (die ‚Produktionsstraße‘) gehen wird. Für jedes ‚Kärtchen‘ gilt es die Zeit zu hinterlegen, die es in einer Spalte (vergleichbar mit einer Arbeitsstation) verbracht hat. Die sogenannte Work-In-Progress. Anhand der Auswertung der Work-In-Progress-Items eines Kärtchens ist das Team in der Lage den Prozess für einzelne Aufgaben zu messen und daraus resultierend Verbesserungsmaßnahmen anzustoßen. Ein weiter Pluspunkt des Kanban-Boards ist die Visualisierung der ‚Bestände‘ die sich gerade an einer Arbeitsstation befinden. Anhand dieser visuellen Information ist das Team in der Lage schnell und selbstverantwortlich zu reagieren und ein mögliches Bottleneck zu beseitigen.

Methoden der Agilität – Ein Auszug

Test Driven Development

Im Mittelpunkt des TDD steht der Test-First-Gedanke. Hierbei werden automatisierte Software-Tests für spezifische Programm-Abschnitte entwickelt bevor die Funktion selbst entwickelt wird. In einem iterativen Prozess wird Stück für Stück die eigentliche Funktion implementiert. Die Implementierung endet erst dann, wenn alle Tests definiert sind und die Funktion alle Tests erfolgreich besteht. Gerade in Projekten mit einer hohen Anzahl an LoC (Lines of Code) stellen wir dadurch sicher, dass bestehende Funktionalität und Programmabläufe auch nach Änderungen oder Erweiterungen zuverlässig ihre Aufgaben erledigen.

Pair Programming

Diese Methode der Softwareentwicklung verfolgt das Ziel schneller qualitativ hochwertigen Quellcode zu produzieren. Im Rahmen der Entwicklung einer Aufgabe, eines Feature oder eines Moduls arbeiten stets zwei Entwickler gemeinsam an einem Arbeitsplatz daran die Lösung zu implementieren. Eine Variante bei der Ausübung dieser Methodik kann sein, das ein Entwickler die Rolle des ‚Machers‘ übernimmt der seine Gedanken laut formuliert und gleichzeitig den Quellcode dazu verfasst. Der ‚Co-Worker‘ nimmt dabei die Rolle der Qualitätssicherung ein. Aufgrund seiner distanzierten Sicht hat der ‚Co-Worker‘ die Möglichkeit die Gedanken des ‚Machers‘ direkt zu hinterfragen und On-Demand einen weiteren Lösungsansatz zu bieten. Ein weiterer Benefit des Pair Programming ist das 4 Augen Prinzip. Der ‚Co-Worker‘ prüft bereits während der Erstellung den erzeugten Quellcode hinsichtlich Coding Guidlines, Lesbarkeit und Struktur.

Durch regelmäßiges Wechseln der Rollen kommen beide Kollegen in den Genuss des ‚Learning by Doing‘. Anhand der beschriebenen Vorgehensweise wird die Qualität des Softwareprodukts insofern nachhaltig gesteigert, da bereits bei der Entstehung Fehler erkannt und behoben werden. Studien zum Pair Programming belegen das die Fehlerrate dabei bis zu 15% geringer ist als bei herkömmlichen Entwicklungsmethoden.