Do IT Agile

Traditionelle Software Projektplanung geht davon aus

  • dass es möglich ist, zum Vornherein bis ins Detail festhalten zu können, welche Funktionalität die Software bieten soll
  • dass während der Projektdurchführung keine unvorhergesehenen Schwierigkeiten auftreten
  • dass die Bedürfnisse des Anwenders der Software sich während der Entwicklung nicht ändern
  • dass eine exakte Zeitplanung möglich ist

Die Wirklichkeit, wie wir wissen, sieht aber beinahe in jedem Fall ganz anders aus.

Agile Software Entwicklung

Agile Software Entwicklung ist iterativ und inkrementell - Anforderungen und Lösungen entstehen kontinuierlich durch die Zusammenarbeit von Teams, die sich selber organisieren und sich in ihrer Funktion überlappen.

Die Grundgedanken der Agilen Methodik sind im Agile Manifesto festgehalten.

Agile Manifesto

Das Manifesto for Agile Software Development definiert die Grundgedanken und zwölf Prinzipien der Agilen Software Entwicklung.

Im Zentrum des Manifests stehen folgende Gedanken:

  • Individuen und Interaktion sind wichtiger als Prozesse und Werkzeuge
  • Funktionierende Software ist wichtiger als umfassende Dokumentation
  • Zusammenarbeit mit dem Kunden ist wichtiger als die Verhandlung von Verträgen
  • Auf Änderungen zu reagieren ist wichtiger als einem strikten Plan zu folgen

Die zwölf Prinzipien der Agilen Software Entwicklung sind:

  • die höchste Priorität ist es, durch frühe und kontinuierliche Auslieferung von wertvoller Software den Kunden zufrieden zu stellen
  • Änderungen in den Anforderungen willkommen zu heissen - damit Veränderungen für den Kunden zu einem Wettbewerbsvorteil werden können
  • Regelmässige Auslieferung von funktionierender Software in kurzen Zeitspannen (idealerweise wenige Wochen)
  • Entwickler und Geschäftsleute sollen während der Entwicklung täglich zusammen arbeiten
  • Projekte so gestalten, dass alle Beteiligten motiviert sind - die dazu notwendige Umgebung schaffen, Unterstützung leisten, Vertrauen schenken
  • die effizienteste und effektivste Art des Informationsaustauschs ist das direkte Gespräch
  • funktionierende Software ist die primäre Einheit um den Projektfortschritt zu messen
  • Agile Prozesse fördern nachhaltige Software Entwicklung - Projektmitarbeiter sollen eine konstantes Tempo während unbeschränkter Zeit aufrecht erhalten können
  • stetes Augenmerk auf technische Qualität und gutes Design fördern Agilität
  • Einfachheit - die Kunst die Menge an nicht getaner Arbeit zu maximieren - ist essentiell
  • die beste Software Architektur, die besten Anforderungen, und das beste Design entstehen in sich selber organisierenden Teams
  • das Team reflektiert regelmässig wie es seine Effektivität steigern kann, und passt sein Vorgehen entsprechend an

Triman hat sich diesen Prinzipien verschrieben und deshalb das Agile Manifesto unterzeichnet.

Scrum

Scrum ist eine Methode der Agilen Software Entwicklung die in den letzen Jahren immer mehr an Popularität gewonnen hat.

Auch in Scrum stehen iterative Planung und inkrementelle Entwicklung im Mittelpunkt. Anders als traditionelle Projektmanagementmethoden, baut Scrum auf der Erkenntnis auf, dass unvorhergesehene Herausforderungen jederzeit entstehen können, und nicht vorhersehbar sind. Stattdessen wird der Fokus darauf gelegt, flexibel auf sich ändernde Bedürfnisse reagieren zu können, und dem Kunden in kurzen Zyklen laufbare Versionen der Software auszuliefern.

Scrum besticht nicht zuletzt in der Einfachheit seiner Aufgabenverteilung. Es gibt nur drei Rollen:

  • Product Owner
  • Development Team
  • Scrum Master

Der Product Owner ist die Stimme des Kunden. Es ist seine Aufgabe sicherzustellen, dass die Software den Bedürfnissen des Kunden gerecht werden. Dazu erstellt er einen Katalog (Product Backlog) von Elementen (User Stories) zusammen, aus der die Software bestehen soll. Diese User Stories werden vom Product Owner anschliessend priorisiert.

Aufgabe des Development Teams ist es, die User Stories umzusetzen.

Der Scrum Master hat die Aufgabe sicherzustellen, dass die Scrum Methodik eingehalten wird, und dass das Development Team seiner Aufgabe ungestört nachgehen kann.

Die iterative Planung und inkrementelle Entwicklung zeigt sich deutlich im Ablauf eines Scrum Projekts. Teile des Gesamtprojekts werden in sogenannten Sprints fertiggestellt. Ein Sprint ist eine zeitlich begrenzte Phase der Softwareentwicklung, in welcher ein vorher festgelegter Satz von User Stories umgesetzt werden soll:

  • der Product Owner entscheidet, welche Elemente des Product Backlogs als nächstes umgesetzt werden sollen
  • die Entwickler schätzen ab, welche und wie viele dieser User Stories sind während des nächsten Sprints fertigstellen können - dies wird im sogenannten Sprint Backlog festgehalten
  • die Entwickler beginnen dann mit der Umsetzung der User Stories die sich im Sprint Backlog befinden
  • der Sprint endet nach der festgesetzten Zeit, ungeachtet dessen, ob alle Ziele erreicht wurden
  • das Resultat des Sprints ist ein fertiggestellter und lauffähiger Teil des Gesamtprojekts
  • die Entwickler demonstrieren dem Product Owner wie die Software angewendet wird
  • der beendete Sprint wird vom gesamten Projektteam analysiert und die gewonnen Erkenntnisse fliessen in die Planung des nächsten Sprints ein