Agile Softwareentwicklung
mit Taktsoft

Das Ziel ist gute Software - schnell und günstig!

Warum braucht man dafür einen speziellen Prozess?

Die Entwicklung von Individualsoftware bedeutet die Anfertigung einer Software, die auf die Anforderungen und Herausforderungen des Auftraggebers maßgeschneidert ist. Dazu ist es notwendig diese zu verstehen, zu verinnerlichen und umzusetzen. Dafür ist es erforderlich, so nah wie möglich an den Kunden und die Nutzer der Software zu gelangen, um das (gegenseitige) Verständnis so schnell und gut wie möglich zu erreichen.

Unsere agile Softwareentwicklung überbrückt die Distanz zwischen Kunden und Softwareentwickler Taktsoft plant, entwickelt und betreibt Ihre Individualsoftware

Der aktuelle Stand der Softwaretechnologie ermöglicht in der Umsetzung eine Geschwindigkeit und vor allem eine Reaktionsfähigkeit wie nie zuvor in der Geschichte der Softwareentwicklung. Dafür ist einerseits ein hohes technisches Know-How notwendig, andererseits aber auch ein Prozess, der diesen Möglichkeiten gewachsen ist.

Wie das Wasserfallmodell zum Symbol für den Wunsch nach Einfachheit und gleichzeitig zum schlechten Beispiel wurde

Softwareentwicklung ist eine komplexe Tätigkeit, die für Außenstehende oftmals schwer nachzuvollziehen, geschweige denn zu steuern ist. Daher gab es bereits früh den Wunsch nach einem einfachen Prozessmodell für das Management größerer Softwareprojekte. Das Wasserfallmodell, 1970 von Winston Royce vorgestellt, wurde bereits damals durch den Autor selbst als "risky and invites failure" (risikoreich und fehleranfällig) bezeichnet. Doch der Wunsch nach einem Modell, welches sich leicht verstehen und implementieren lässt, führte dazu, dass es auch heute noch oft herangezogen wird:
Fest definierte Prozessschritte, wobei der Abschluss des direkt vorhergehenden Schrittes zwingende Voraussetzung für den Start des darauffolgenden Schrittes ist - das liest sich schlüssig und vermittelt ein Gefühl von Sicherheit. Eine Repräsentation dieser Ansicht findet sich auch im beliebten und gängigen Gantt-Chart. Alle Phasen haben einen definierten Beginn und ein definiertes Ende und die Abhängigkeiten voneinander sind klar ersichtlich.
Doch dies ist bereits für "normale" Projekte eine starke Vereinfachung. Für Softwareentwicklungs-Projekte ist sie schlichtweg falsch!

Und die Folgen?

Wie auch der aktuelle Chaos Report wieder zeigt, treten die Folgen in den unterschiedlichsten Ausprägungen auf und haben oftmals dramatische Konsequenzen. So ist das durchweg erfolgreiche Softwareprojekt auch im neuen Jahrtausend immer noch die Ausnahme. Mehr als zwei Drittel aller Projekte erzielen nicht den ursprünglich gewünschten Erfolg. Knapp ein Drittel scheitert weiterhin komplett und muss abgebrochen werden.

Das Wasserfall-Modell - Ein Fall für die Mülltonne?

Warum Agil?

Was spricht methodisch gegen eine detaillierte Planung vor der eigentlichen Umsetzung?

Im sogenannten "Big Design Upfront" setzen sich besonders ausgebildete und erfahrene Software-Entwickler und Software-Architekten mit dem Anforderungskatalog nach allen Regeln des Requirement Engineerings auseinander. Dieser Prozess ist meistens sehr aufwändig. Das Ergebnis ist ein Konzept für alle Aspekte der Software, insbesondere die Architektur, das Domain-Modell und den gesamten Funktionsumfang. Ziel ist es, die Software im Vorhinein und vollumfänglich zu beschreiben. Anschließend soll sie nach diesem Plan nur noch "herunterprogrammiert" werden. Dieser Ansatz hat zwei grundsätzliche Nachteile:

  1. Er ist auf Änderungen, die sich im Projektverlauf ergeben, nicht eingerichtet.
  2. Warum sind solche Änderungen relevant?

    • Zu Beginn eines komplexen Projektes stehen der vollständige Funktionsumfang, geschweige denn die Funktionsdetails nicht fest.
    • Je dynamischer das Umfeld, um so mehr Annahmen müssen getroffen und Eventualitäten berücksichtigt werden.
    • Die Wahrscheinlichkeit, schlechte Entscheidungen zu treffen, wird dadurch sehr hoch.
  3. Der Prozess der Umsetzung ist zu weit vom Kunden entfernt.
  4. Warum ist es so wichtig den Kunden einzubinden?

    • Beim Erfassen der Anforderungen bleibt immer eine gewisse Unschärfe, die Interpretationsspielraum lässt.
    • Diese Lücke muss im Zuge der Umsetzung geschlossen werden.
    • Doch ob das Ergebniss stimmt, kann nur der Kunde anhand funktionsfähiger Software entscheiden.

Zusammengefasst lässt sich feststellen: Mit vertretbarem Aufwand ist es nicht möglich, während der Planung und vor der eigentlichen Entwicklung, alle Unwägbarkeiten eines Software-Projektes auszuschließen. Dies wird dadurch verstärkt, dass es sich bei Softwareentwicklung um eine Disziplin handelt, die keinen engen physikalischen Gesetzen gehorcht (wie z.B. das Konstruieren von Bauwerken, mit dem sie oft verglichen wird), sondern geradezu grenzenlose Freiheit erlaubt.

Dieser große Vorteil der Softwareentwicklung wird hier zum Nachteil: Dadurch, dass man prinzipiell fast alle Freiheiten hat, ergibt sich zwangsläufig ein Problem der Unschärfe und Unvollständigkeit. Das heißt, egal wie detailliert die Anforderungen auch sind, sie enthalten die Notwendigkeit der Interpretation. Diesem Problem wird in vielerlei Hinsicht entgegengewirkt. Beinahe unzählige Entwicklungen auf dem Gebiet der Softwareentwicklung der letzten Jahre dienen dazu, diese zu minimieren: Es werden Grenzen gesetzt, wiederkehrende Herausforderungen identifiziert und Lösungsmuster vereinheitlicht und vereinfacht. Mit Ruby on Rails nutzen wir die aktuellste Speerspitze dieser Entwicklung.

Trotz dieser Fortschritte ist es weiterhin Aufgabe des Entwicklers, im Rahmen der Umsetzung die Anforderungen zu interpretieren und Entscheidungen zu treffen. Diese Entscheidungen tangieren fast alle Aspekte der Software, wie z.B. Qualität, Funktionalität, User Interface, Antwortverhalten, etc. und sie beeinflussen insbesondere den weiteren Projektverlauf.

Diesen aktuellen Möglichkeiten und Herausforderungen stellt sich ein agiler Prozess zur Softwareentwicklung. Taktsoft nutzt dafür Scrum als Projekt-Management-Framework.

Was zeichnet Agile Methoden aus?

Ein agiler Prozess geht offensiv mit der naturgegebenen Unschärfe von Anforderungen um und nutzt gleichzeitig die technischen Möglichkeiten zur schnellen und effizienten Anpassung. Die Annahme, dass Softwareentwicklung iterativ geschieht, wird zum Paradigma erhoben. Teil des Chaos Reports ist eine Umfrage nach den Hauptfaktoren, die den Erfolg eines Softwareprojektes ausmachen. Die sechs Top gelisteten Punkte sind:

  1. Einbeziehung der Benutzer
  2. Unterstützung des Managments
  3. Klarheit der Anforderungen
  4. Ordentliche Planung
  5. Realistische Erwartungen
  6. Eine kleinteilige Meilensteinplanung

Durch die drei Säulen, Transparenz, Überprüfung und Anpassung, auf denen der agile Softwareprozess nach Scrum basiert, werden fast alle diese Punkte direkt adressiert.
Für jeden "Sprint" werden die Ziele des Projekt-Teams durch das Team selbst definiert und kommuniziert. Nach jedem Sprint wird eine aktuelle und "potentiell auslieferbare" Version der Software bereitgestellt. Somit werden Benutzer und Entscheidungsträger über den Product Owner hinaus jederzeit in die Lage versetzt und dazu animiert, sich über den aktuellen Stand der Entwicklung zu informieren und Feedback zu geben. Die Erfassung der Anforderungen als User Stories stellen die Motivation hinter den Anforderungen heraus und ermöglichen eine zielgerichtete Interpretation und Anreicherung mit Expertenwissen. Das Entwicklerteam setzt sich gemeinsam mit dem Product Owner kontinuierlich mit diesen Anforderungen auseinander. Die To-dos werden so ständig verfeinert, in Ihrer Komplexität bewertet und in ihrer Priorität angepasst. Dadurch wird über den Projektverlauf eine immer genauer werdende Planung ermöglicht. Diese transparente Auseinandersetzung steigert kontinuierlich die Genauigkeit der Vorhersage über noch zu erledigende Arbeit und fördert eine realistische Erwartungshaltung.

Unsere agile Softwareentwicklung überbrückt die Distanz zwischen Kunden und Softwareentwickler

Gute Software - schnell und günstig

Somit ermöglicht unser Agiler Prozess bei gleichbleibend hoher Qualität eine Schnelligkeit und Flexibilität, die mit anderen, ursprünglichen Methoden nicht zu erreichen sind. Dies kommt natürlich auch unseren Kunden zu Gute. Dabei ist es eine Frage der individuellen Gestaltung und der Projekt-Gegebenheiten, in wie fern die Einbindung statt findet. Die reduzierten Planungsaufwände, die frühe Möglichkeit des Feedbacks und somit die Vermeidung von Fehlentwicklungen sind in jedem Fall erfahrbar und schlagen sich in geringeren Kosten nieder!