Sie reagieren flexibel auf Veränderungen. Warum sollte es Ihre Software nicht tun?

Dank agilen Entwicklungsmethoden messen wir unsere Release-Zyklen in Wochen und nicht in Jahren. Dadurch können wir schnell auf neue Anforderungen in der Entwicklung reagieren und Komplexität beherrschbar machen.

Umfangreiche Projekte „Stück für Stück“ mit Scrum

Als agile Software-Entwicklungsmethode ist Scrum, aus dem Englischen für „[das] Gedränge“, ein beliebter Ansatz um kontinuierlichen Fortschritt in komplexen Projekten zu erzielen.
Hierbei fließen Änderungen kontinuierlich und kontrolliert in das jeweilige Arbeitsergebnis mit ein.

Wie funktioniert es?

Bei der Software-Entwicklung mit dieser Methode wird die Projektarbeit in Interationen organisiert, sogenannten „Sprints“. Die Sprintlänge ist dabei gleichmäßig organisiert und gibt dem bearbeitenden Team einen entsprechenden Rhythmus.

Zu Beginn, auf Basis einer Planung mit dem Kunden, steht eine Liste mit Anforderungen, dem als „Backlog“ kategorisierten Anteil. Dieser kann aus einer allgemeinen Liste des zu implementierenden Produkts, dem „Product Backlog“ für den aktuellen Sprint extrahiert werden.
In Zusammenarbeit mit den Projektverantwortlichen wird hiervon eine konkrete Liste mit passenden Prioritäten definiert, welche in einem bewusst kurz gehaltenen Sprint, also einer Projekt-Iteration, umgesetzt werden kann. Wichtig ist hierbei, dass nur so viele Aufgaben in den Sprint mit aufgenommen werden, welche erfahrungsgemäß umgesetzt werden können, und zwar so, dass am Ende des Sprints wieder ein nutzbares Programm bzw Produkt resultiert.

Ab einem gewissen Punkt der Entwicklungsarbeit zu dem aktuell laufenden Sprint werden dem Projekt-Kunden, oftmals auch als „Product-Owner“ bezeichnet, testbare Bestandteile des Sprints zur Verfügung gestellt, damit dieser eine Prüfung vornehmen kann.
Hierdurch nimmt das Entwickler-Team also Feedback auf und modifiziert anschließend entsprechend der Anforderungen des Kunden den aktuell vorliegenden Sprint, um letztlich in ein finalisierbares und nutzbares Produkt, auch als „Product Increment“ bezeichnet, zu überführen.

Zum Abschluss eines Sprints oder zu Beginn eines neuen wird im Allgemeinen zusammen im Team überlegt, was an der Arbeits- und Vorgehensweise optimiert werden kann. Und hierbei geht es im Wesentlichen darum, die Arbeitsabläufe zu verbessern.

Software Kanban

Eine nicht selten genutzte Software-Entwicklungsmethode ist Kanban. Das Wort selbst stammt aus dem Japanischen und bedeutet „Signalkarte“: „kan“ für „Signal“ und „ban“ für „Karte“. Diese Methode stammt ursprünglich aus dem Toyota Konzern, mit der im Grunde ein gleichmäßiger Fluss in der Fertigungsstrecke hergestellt sowie Lagerstände reduziert werden sollen. Systematisch gehört Kanban also zu Gruppe der Produktionsplanung- und steuerung und lässt sich somit auch eins zu eins in der Software-Entwicklung anwenden.

So funktioniert Kanban

Als agile Methode besteht der Kanban Prozess in kleinen Schritten, welche kontinuierlich verbessert werden. Dies geschieht im Wesehntlichen durch viele kleine Änderungen, keine komplexen oder sehr große Änderungen:

Herz des Kanban Systems ist hierbei an sich eine Kanban-Karte, welche eine konkrete Resource in der Produktion, also einem Teil der umzusetzenden Software-Funktion, abbildet. Ziel ist es, dass die definierten Aufgaben möglichst gleichmäßíg die einzelnen Prozessschritte durchlaufen.

Kerngedanke ist auch, dass ein Ist-Zustand schrittweise verbessert werden soll, einen definierten Endzustand gibt es nicht. Zudem ist im Grundgedanken somit auch eine stetige Weiterentwicklung bei Software-Kanban vorgesehen.
Kanban fordert hierbei von den Projektverantwortlichen, dass die Anforderungen möchlichst weit herunterbrochen, also in kleinen Einheiten definiert werden.

All dies setzt also auf Transparenz, um den Prozess der Software-Entwicklung kontinuierlich zu verbessern, mit dem Fokus darauf, möglichst häufig aussteuerbare Software Inkremente zu erhalten.

Vorgehensweise

Diese drückt sich im Grunde in der Visualisierung vorhandener Arbeit in Form eines Kanban-Boards aus, einem an sich einfachen Whiteboard mit Haftnotizen und den platzierten, erwähnten Kanban-Karten. Jede Karte repräsentiert dabei immer eine abzuarbeitenden Aufgabe in der Entwicklung.

Anfänglich werden die offenen Aufgaben im „Backlog“ des Boards eingeordnet, können also eine Sammlung von Aufgaben zu einem Software-Produkt darstellen. Anschließend wird eine Auswahl an Aufgaben in einen Status „Bereit“ eingeordnet, um sie für die Entwicklung freizugeben. In einer weiteren Spalte, werden die Karten entsprechend Ihres Status „in Bearbeitung“ oder „erledigt“ von den Entwicklern kategorisiert.

Gleiches gilt im Grunde für eine Testphase erledigter Karten, welche in der Reihenfolge für das Testen zu Beginn freigegeben und vom Kunden in der Funktion anschließend validiert bzw. geprüft werden. Erfolgreich geprüfte Karten warndern dann in die Release Spalte und stehen als Funktionen für das Produkt-Inkrement zur Verfügung.

Abgeschlossene Aufgaben werden als „fertig“ eingeordnet und sind somit im finalen Produkt enthalten.