© Ekaphon maneechot/Shutterstock.com
Agiles Anforderungsmanagement mit Impact Mapping

Software that matters


In den letzten Jahren ist viel Energie in die Aufgabe investiert worden, die Effizienz von Softwareentwicklungsteams zu steigern. Bessere Werkzeuge und Praktiken lagen im Fokus unserer Bemühungen. Die Herausforderung ist nun, unser Wissen und Können so einzusetzen, dass nachhaltig erfolgreiche Software – „Software that matters“ – entstehen kann: Auf Effizienz muss Effektivität folgen.

Softwareentwicklung ist eine in vieler Hinsicht ungewöhnliche Disziplin. Um zu verstehen, warum neue Methoden des Anforderungsmanagements – oder gar ein neuer Anforderungsbegriff – nötig sind, sollten wir zunächst den Blick auf einige Besonderheiten unseres Handwerks richten.

Software und Komplexität

Wikipedia beschreibt Ingenieure als Menschen, die sich damit beschäftigen, „naturwissenschaftliche Erkenntnisse zum praktischen Nutzen der Menschheit [anzuwenden]“ [1]. In seinem Fachgebiet löst der Ingenieur neue Probleme, indem er auf Forschungsergebnisse, aber auch auf übermitteltes Wissen, bewährte Methoden und vorhandene Lösungskomponenten zurückgreift. In dem Objekt seiner Tätigkeit ist er in der Regel durch die Grenzen seines Fachgebiets, in der Wahl seiner Lösungsstrategien durch Naturgesetze eingeschränkt.

Betrachten wir die Disziplin der Softwareentwicklung, fallen mehrere Unterschiede auf. Ein Blick auf die unterschiedlichen Anforderungen, die an Softwareentwickler herangetragen werden, macht das deutlich:

  • Mache alles Wissen der Welt frei verfügbar

  • Versetze einen PKW in die Lage, selbstständig einzuparken

  • Vertreibe meine Langeweile

  • Hilf mir bei der Genehmigung von Urlaubsanträgen

Eine fachlich-inhaltliche Spezialisierung findet häufig nicht statt und ist in Anbetracht des ständig wachsenden Problemraums möglicherweise auch nicht realisierbar. In der Praxis bedeutet das, regelmäßig mit unbekannten Problemdomänen konfrontiert zu werden. Auf der anderen Seite unterliegt Software nahezu keinen Naturgesetzen. Konstante Rahmenbedingungen und Einschränkungen, die uns bei der Suche nach einer Lösung als Leitplanken dienen könnten, gibt es nicht.

Diese Kombination aus unbekanntem Problem und beliebiger Lösung führt dazu, dass wir als Softwareentwickler häufig mit Komplexität konfrontiert werden: Wirkungszusammenhänge sind nicht a priori identifizierbar, reproduzierbare Lösungswege oder gar Musterlösungen nicht verfügbar.

In Anbetracht dieser Konstellation haben sich in den vergangenen Jahren Verhaltensstrategien entwickelt, die heute gerne unter dem Schlagwort „agile Softwareentwicklung“ zusammengefasst werden.

Agilität als Handlungsstrategie für die komplexe Domäne

Agile Softwareentwicklung ist ein zunehmend mit Bedeutung überfrachteter Begriff. Ausgehend von dem Manifest für agile Softwareentwicklung setzt wohl jeder Praktizierende seine eigenen Schwerpunkte. Im Kontext dieses Artikels und der Auseinandersetzung mit Verfahren für Anforderunganalyse und Anforderungsmanagement ist dieser Schwerpunkt für mich der Umgang mit komplexen Problemstellungen. Wenn wir akzeptieren, dass die ideale, oder auch nur eine beliebige, aber effektive Lösung unserer Probleme nicht auf dem Reißbrett planbar ist, bleibt uns als Alternative letztlich nur eine Handlungsstrategie, die auf die Überprüfung von Annahmen ausgerichtet ist. Mit Prinzipien wie „Working Software“, „Responding to Change“ und kontinuierlicher Reflexion schafft die agile Softwareentwicklung aus meiner Sicht diesen Handlungsrahmen – wenn man sie lässt.

In der Realität der Softwareentwicklungsprojekte dominiert dennoch eine von dem Wunsch nach Planbarkeit und Garantien getriebene Form der Projektinitialisierung: An erster Stelle, letztlich sogar im verwendeten Begriff des „Projekts“ verankert, steht die Abgrenzung von Inhalten, die Festlegung so genannter Anforderungen. „Agile“ Projekte zeichnen sich häufig nur dadurch aus, dass das Change-Request-Verfahren leichtgewichtiger ist und der Beobachtung Rechnung trägt, dass wir uns bei der Formulierung der Anforderungen geirrt haben könnten. „Agile“ Projekte verzichten vielleicht auf die Ausformulierung aller Anforderungsdetails. Dennoch liegt häufig der Fokus darauf, einen sich geringfügig verändernden Satz von Anforderungen – üblicherweise Funktionsbausteine des zu erstellenden Systems – so effizient wie möglich herzustellen.

Hier ist meiner Meinung nach ein Paradigmenwechsel nötig: Ich glaube, dass wir uns insbesondere hinsichtlich komplexer Probleme von diesem Anforderungsbegriff lösen müssen. Das Bedürfnis nach Planbarkeit und Fortschrittskontrolle ist v...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang