Projektteams sorgen für erfolgreiche Softwareentwicklung
Populäre Methode in der Softwareentwicklung: Scrum
Die Entwicklung von Unternehmenssoftware ist heute ein komplexes Unterfangen mit einer Vielzahl an Beteiligten. Als Softwareunternehmen wissen wir das nur zu gut. Denn unsere Lösungen bedienen nicht nur unterschiedlichste Kundenanforderungen in den Bereichen E-Mail- und Workflow-Management, sondern arbeiten auch mit verschiedensten Technologien auf einer Vielzahl an Plattformen.
Und neben den Mitarbeitern, die die eigentliche Programmierung durchführen, sind auch zahlreiche Kollegen zum Testen der Software eingebunden. Für das Aufstellen der Anforderungen und die Abnahme sind zudem Produktmanager zuständig. Je nach Umfang des Entwicklungsvorhabens können noch User Interface Designer, die für das Entwerfen der Benutzerschnittstelle zuständig sind, Software Architekten, welche die Architektur der Software entwerfen, und Stakeholder eingebunden werden.
In diesem Artikel möchte ich gemeinsam mit Ihnen einen Blick auf eine der derzeit populärsten Methodiken werfen: den agilen Softwareentwicklungsprozess basierend auf Scrum.
Agile Durchführung
Damit ein Softwareentwicklungsprozess zielgerichtet umgesetzt werden kann, erfolgt die Durchführung mit Hilfe von Vorgehensmodellen. Bei den in den 1970er Jahren eingeführten Wasserfall-Modellen wurde versucht, bereits am Anfang eines Projektes möglichst vollständig alle terminlichen, wirtschaftlichen und organisatorischen Aspekte festzulegen. Dies entspricht aufgrund der Komplexität von Software und der sich häufig ändernden Anforderungen oftmals nicht der Realität.
Demgegenüber können bei den inkrementellen Vorgehensmodellen im Laufe des Projektes Anpassungen terminlicher, wirtschaftlicher und organisatorischer Art vorgenommen werden. Im Jahr 2001 wurden von sechs Autoren 12 Prinzipien zur Entwicklung von Software im Rahmen des Agilen Manifests definiert.
Diese definieren unter anderem, dass späte Anforderungsänderungen erwünscht sind, dass regelmäßig eine funktionierende Version der Software erstellt, persönliche Gespräche innerhalb des Entwicklungsteams bevorzugt werden sollen und dass in regelmäßigen Abständen das Team überprüft, wie es effektiver arbeiten kann. Dadurch soll eine höhere Produktivität des Teams, eine schnellere Auslieferung, eine bessere Qualität der Software erreicht werden, so dass sich letztendlich eine höhere Kundenzufriedenheit einstellt. Diese Prinzipien finden sich in einigen Vorgehensmodellen wieder. Dazu gehören Scrum, Kaban und eXtreme Programming.
Scrum
Laut einer Umfrage mehrerer Hochschulen, ist Scrum das am häufigsten in einem Softwareentwicklungsprozess eingesetzte Vorgehensmodell. Auch in der Entwicklung bei GBS kommt diese Methodik zum Einsatz. Bei Scrum handelt es sich um eine Organisationsmethode und ein Framework des Projektmanagements. Scrum basiert auf der Idee, dass sich das Entwicklerteam selbst organisieren und auch die unterstützenden Werkzeuge selbst bestimmen kann.
Die drei wichtigen Rollen in Scrum: Product Owner, Scrum Master, Scrum Team
Der gesamte Zeitraum, der vom Projektstart bis zum Projektende zur Verfügung steht, wird in Iterationen eingeteilt. Eine Iteration dauert in der Regel eine oder zwei Wochen. Für die Durchführung werden die Beteiligten in Scrum in drei Rollen eingeteilt:
- Der Product Owner ist für die Pflege der Anforderungen verantwortlich. Er vertritt im Projekt den Kunden und definiert die Projektziele und nimmt am Ende der Iteration die Ergebnisse ab. Die Anforderungen definiert der Product Owner umgangssprachlich zusammen mit den Abnahmekriterien, in Form von User Stories. Die User Stories werden dabei immer aus der Sicht des jeweiligen Anwenders der Software definiert.
- Neben dem Product Owner gibt es den Scrum Master, welcher für die Durchführung und Einhaltung des Scrum-Prozesses zuständig ist. Daneben ist er für die Organisation der Besprechungen zuständig.
- Die dritte Rolle ist das Scrum Team. Es besteht aus den Personen, die für die Ausführung der Aufgaben im Projekt zuständig sind. Hierzu können die Software Architekten, die Software Entwickler, die Test Engineers, die Technischen Redakteure oder UX Designer gehören. Damit das Projekt organisierbar bleibt, sollte das Scrum Team im optimalen Fall zwischen 3 und 6 Personen umfassen.
Anfang und Ende einer Iteration
Am Anfang einer Iteration definiert das Scrum Team im Planungsmeeting selbständig, welche Aufgaben von wem in der Iteration durchgeführt werden. Am Ende der Iteration stellt das Scrum Team im Review-Meeting dem Product Owner die Ergebnisse vor, der die Aufgabe abnehmen oder Änderungen bestimmen kann. Zwischen dem Planungs- und dem Review-Meeting werden in der Regel einmal täglich Daily Scrum-Meetings durchgeführt, indem die Scrum Team-Mitglieder über den aktuellen Stand ihrer Aufgaben berichten und mitteilen, ob Probleme aufgetreten sind. Diese täglichen Meetings sollen kurz gehalten werden und sollen in der Regel nicht länger als 15 Minuten dauern.
Am Ende einer Iteration findet ein Retrospektive-Meeting statt, in dem versucht wird, Hindernisse in der vergangenen Iteration zu finden, so dass diese in der nachfolgenden Iteration vermieden werden können. In der Praxis hat es sich bewährt keinen starren Scrum-Prozess für alle Projekte anzuwenden. Stattdessen sollten am Anfang eines jeden Projektes die Parameter für den Scrum-Prozess hinsichtlich der Projektgegebenheiten und den zur Verfügung stehenden Personen definiert werden.
Microsoft Team Foundation Server
Aufgrund der Komplexität der Softwareentwicklung kann der Steuerungs- und Aufgabenprozess in Scrum-Projekten mit Hilfe von elektronischen Werkzeugen unterstützt werden. Ein beliebtes Werkzeug ist der Team Foundation Server (TFS) von Microsoft, den wir für unsere beiden Produktlinien iQ.Suite und GBS AppDesigner verwenden. Der Product Owner kann das Produkt-Backlog mit Hilfe von Epics, Features und User Stories strukturieren und so die Funktionsvorgaben an das Team definieren. Dem Team wiederum steht ein Taskboard zur Verfügung mit dem die Aufgaben den Team-Mitgliedern zur Bearbeitung zugewiesen werden können. Jede Aufgabe wird in Form einer Karteikarte angezeigt und kann und per Drag & Drop entsprechend dem Bearbeitungsstand zu dem Fortschrittsstatus verschoben werden. Dazu kann das Taskboard beispielsweise in die Spalten „Neu“, „In Arbeit“, „Erledigt“, „Im Test“ und „Abgeschlossen“ eingeteilt werden.
Mit Hilfe eines Burn-Down-Charts kann nicht nur der Arbeitsfortschritt in einer Iteration einfach erkannt werden, sondern auch eventuelle Abweichungen entsprechend der verfügbaren Kapazität. So lässt sich frühzeitig erkennen, ob im späteren Verlauf der Iteration Probleme auftreten können. Anhand weiterer Grafiken, die sich in einem Dashboard anordnen lassen, können sich die Projektbeteiligten und Stakeholder einen Überblick über den Status der Aufgaben verschaffen.
Der TFS hat zudem den Vorteil, dass bei Verwendung von Microsoft Visual Studio als Entwicklungsumgebung eine Unterstützung der kontinuierlichen Integration in den Entwicklungsprozess möglich ist. Neben den Steuerungs- und Aufgabenverteilungsfunktionen stellt ein TFS ein Quellcode-Repository bereit und mit dem Microsoft Test Manager ein Werkzeug um manuelle und automatisierte Tests der Software anhand von Testplänen zu strukturieren. Aktuell ist der TFS in der Version 2015 verfügbar. Für dieses Jahr ist die neue Version 2017 geplant, von der es zurzeit eine Vorabversion gibt.
Fazit
Ein Softwareentwicklungsprozess, insbesondere im Enterprise Markt, ist komplex. Anforderungen von Kunden, Compliance-Vorgaben und technologische Innovationen verleihen der Thematik zahlreiche Facetten. Damit Entwicklungsprojekte dennoch unter Einhaltung von Termin- und Budgetvorgaben umgesetzt werden können, ist eine agile Vorgehensweise unumgänglich. Mit Scrum hat sich eine solche Methodik erfolgreich in den letzten Jahren etabliert und dazu beigetragen, diese Komplexität beherrschbar zu machen.
Wie bewerten Sie den Einsatz von Scrum? Welche Erfahrungen haben Sie gemacht? Ich freue mich auf Ihre Kommentare.
Der Beitrag Agiler Softwareentwicklungsprozess: Komplexität beherrschen erschien zuerst auf GBS - Der Blog rund um Security, Collaboration & Co.