Der Softwareentwicklungsprozess im Hause der IWM Software AG

Der Softwareentwicklungsprozess im Hause der IWM Software AG

In den letzten Jahren wurde bei der IWM Software AG eine agile Vorgehensweise in der Softwareentwicklung etabliert, die es ermöglicht, einen klar abgesteckten Bereich an Projekten zu realisieren und an den Kunden zeitnah auszuliefern.

Ein klares Geschäftsziel des Unternehmens heißt: die Effizienz in der Softwareentwicklung zu erhöhen. Hierzu bedient sich die IWM Software AG
des agilen Softwareentwicklungsprozesses Scrum, wodurch eine stetige Verbesserung erreicht werden soll.

Softwarentwicklung im Scrum-Prozess

Die empirische Verbesserung beruht dabei auf drei Säulen:
1.Transparenz:
Der Fortschritt und die Hindernisse eines Projektes werden regelmäßig und für alle sichtbar festgehalten.
2. Überprüfung:
In regelmäßigen Abständen werden Produktfunktionalitäten geliefert und sowohl das Produkt als auch das Vorgehen beurteilt.
3. Anpassung:
Die Anforderungen an das Produkt, die Pläne und das Vorgehen werden nicht ein für alle Mal festgelegt, sondern kontinuierlich detailliert und angepasst (just-in-time).

Ziel dieser Vorgehensweise ist die schnelle und qualitativ hochwertige Entwicklung von Produkten entsprechend einer formulierten Vision. Die Umsetzung der Vision in das fertige Produkt erfolgt nicht durch die Aufstellung möglichst detaillierter Anforderungslisten (vgl. Lastenheft/Pflichtenheft), die dann phasenweise umgesetzt werden. In Scrum werden die Anforderungen in Form klarer Eigenschaften aus der Anwendersicht formuliert (Akzeptanzkriterien). Die Liste dieser Anforderungen ist das Product Backlog. Diese Anforderungen werden Stück für Stück in zwei bzw. vier Wochen langen Intervallen, sogenannten Sprints, iterativ und inkrementell umgesetzt. Am Ende eines jeden Sprints steht bei Scrum die Lieferung eines fertigen Teilprodukts.

Einsatz sog. Scrum-Teams

Jedes Scrum-Team setzt sich bei der IWM Software AG zusammen aus:
“Scrum Master“ (managt den Prozess und beseitigt Hindernisse)
“Product Owner“ (stellt fachliche Anforderungen und priorisiert sie)
“Entwicklungsteam“ (entwickelt das Produkt)

Als Produktverantwortlicher hält der Product Owner regelmäßig Rücksprache mit den Stakeholdern (z. B. Anwender oder Kunden), um deren Bedürfnisse und Wünsche zu verstehen und in Form von Akzeptanzkriterien festzuschreiben. Dadurch lassen sich bereits zu Beginn des Entwicklungsprozesses Missverständnisse bei der Umsetzung der Kundenanforderung vermeiden. Während des Scrum finden verschiedene Aktivitäten statt, die jeweils von allen Team-Mitgliedern besucht werden und feste Zeitfenster haben, die nicht überschritten werden sollen.

Scrum ist ein agiler Prozess für die Softwareentwicklung und stellt sich dar als ein teambasiertes Rahmenwerk zur Entwicklung qualitativ hochwertiger komplexer Systeme und Produkte.

Scrum wird durch einen Satz von Regeln, Rollen und Zeremonien definiert, die ein Team in die Lage versetzen, Produktinkremente innerhalb von 2-4 Wochen zu liefern. Der Scrum-Flow unten illustriert diese Vorgehensweise.

Da der Scrum-Prozess sehr einfach aufgebaut ist, ist das Verständnis der zugrunde liegenden Prinzipien um so wichtiger:
– Frühe und regelmässige Lieferungen
– Eigenständige Teams mit allen erforderlichen Kompetenzen
– Inspektion und Anpassung
– Transparenz und Aufrichtigkeit
– Time-Boxen

Aktiviäten im Scrum-Prozess

Sprint Planning
Der Product Owner stellt dem Entwicklungsteam die im Product Backlog festgehaltenen Produkteigenschaften vor (in der zuvor priorisierten Reihenfolge).
Das Entwicklungsteam entscheidet, wie viele Aufträge für den kommenden Sprint eingeplant werden und zeichnet sich daher auch für das Erreichen des Sprint-Ziels verantwortlich.

Daily Scrum
Zu Beginn eines jeden Arbeitstages trifft sich das Entwicklerteam zu einem max. 15-minütigen Daily Scrum, bei dem Scrum Master und Product Owner ebenfalls anwesend, jedoch nicht aktiv beteiligt sind, falls sie nicht selbst Backlog-Elemente bearbeiten. Zweck des Daily Scrums ist der Informationsaustausch. Im Daily Scrum werden keine Probleme gelöst – vielmehr geht es darum, sich einen Überblick über den aktuellen Stand der Arbeit zu verschaffen.

Sprint Retrospektive
Die Sprint Retrospektive steht ganz am Ende eines Sprints. Hierbei überprüft das Scrum-Team seine bisherige Arbeitsweise, um sie in Zukunft effizienter und effektiver zu machen.

Scrum2

Aktivitäten im Srum-Prozess

– der sog. Work in Progress (WiP), reduziert und somit schnellere Durchlaufzeiten erreicht und Probleme – insbesondere Engpässe – schnell sichtbar gemacht werden sollen.

Kanban Board

Kanban-Board eines Entwicklerteams bei der IWM Software AG

Testautomatisierung

Eine Rolle in jedem Entwicklerteam stellt ein QM-Mitarbeiter dar.
Einen Großteil seiner Arbeit nimmt neben manuellen Tests mittlerweile die Testautomatisierung ein und verfolgt folgende Ziele:
– Ergänzung zum manuellen Testprozess in der agilen Softwareentwicklung.
– Nächtliche Systemtests der verschiedenen Produktbereiche.
– Einsatz des Werkzeuges Ranorex zum Erstellen, Durchführen und Kontrollieren der Tests.
Weiterhin werden durch das Werkzeug Jenkins (erweiterbares, webbasiertes System zur kontinuierlichen Integration) im Nightly Build, wie der Name bereits andeutet, im nächtlichen Prozess Versionen erstellt und automatisiert getestet.