Proaktives Anforderungsmanagement.

Ziele des proaktiven Anforderungsmanagements

Proaktives Handeln im Bereich Anforderungsmanagement ist in der aktuellen Projektwelt wichtig und notwendig. Zeitdruck und Änderungsrate sind zu hoch, als dass es reicht, erst zum Zeitpunkt des Eintretens nach Alternativen zu suchen. Vorausdenken ist gefragt! Eine goldene Skipper-Regel lautet: „Wenn Du denkst, reffen zu müssen, solltest Du schon gerefft haben!". Im Sturm die Segel zu bergen kann riskant bis lebensgefährlich sein. Die Regel weist an, immer den Horizont zu beobachten und voraus zu denken. Der Segler muss sich stets fragen, ob der aktuelle Kurs noch Sinn ergibt. Kann man ihn unter geänderten Bedingungen noch einhalten? Und wenn der Alternativplan lautet, die Sturmfock zu setzen, sollte man damit beginnen, bevor der Sturm einsetzt. Im Folgenden übertragen wir diese Metapher in das Software Umfeld.

 

Warum proaktives Anforderungsmanagement?

Der klassische Ansatz des Anforderungsmanagements ist in die Jahre gekommen. Produktzyklen sind heutzutage kürzer denn je, Anforderungen ändern sich im Wochentakt und eine Mobile Anwendung muss in wenigen Monaten produktiv sein. Um dem Rechnung zu tragen, ist proaktives Anforderungsmanagement notwendig. Bereiche hoher Änderungswahrscheinlichkeit müssen frühzeitig erkannt und proaktiv behandelt werden. Gleichzeitig gilt es, die kritischen und für die Akzeptanz und die Architektur des Systems entscheidenden Anforderungen vorab zu ermitteln. Weniger wichtige Bereiche können später (z.B. in weiteren Iterationen) bearbeitet werden.

Proaktives Anforderungsmanagement ist also eine Methode, die auch in agilen Projekten, bei instabilem fachlichem Umfeld oder bei hohem Zeit- oder Kostendruckdruck ein sinnvolles Anforderungsmanagement ermöglicht.

 

Drei proaktive Leitlinien für das Management

Die folgenden drei Leitlinien fassen die Inhalte des proaktiven Anforderungsmanagements kurz und knapp zusammen:

1. Angemessenheit vor Perfektion – Ein klassischer Anforderungsmanager ist auf Perfektion ausgerichtet, auf Vollständigkeit und umfangreiche Dokumentation aller Anforderungen vor Beginn der Implementierung. Dort wo es notwendig und sinnvoll ist, kann man jedoch auf Vollständigkeit verzichten. Damit handelt man agil und angemessen.Derartige „Verzichtsentscheidungen" sollten immer bewusst gefällt werden und keinesfalls aus Zeitmangel oder Nachlässigkeit.

2. Anforderungen bleiben stets verdächtig – Jede Anforderung ist zunächst eine Aussage, die auf ihre Relevanz, Stabilität und Nachhaltigkeit geprüft werden muss. Das gilt insbesondere, wenn die Anforderung bereits erfasst und dokumentiert ist. Denn im Gegensatz zum Dokument dreht sich die Welt weiter und stellt vielleicht schon nach wenigen Wochen eine ganz andere Anforderung. Der Anforderungsmanager muss sich auch stets fragen: welche Anforderungen werden höchstwahrscheinlich obsolet oder geändert? Die dadurch notwendigen „konzeptionellen" Änderungen erhöhen den Flexibilitätsdruck auf das gesamte Team. Auch während der Umsetzung muss man bereit sein, lieb gewonnene Entscheidungen wieder über Bord zu werfen. Die Bereitschaft, diesem Stress standzuhalten muss bei neuen Teams meist erst entwickelt werden.

3. Fokus auf die Kern-Anforderungen – Sich proaktiv zu verhalten, bedeutet also Änderungen zu antizipieren. Dadurch erhalten Bewertung und Priorisierung der Anforderungen ganz neues Gewicht. Anforderungen sollten auch nach ihrer Änderungswahrscheinlichkeit und ihrem Gewicht („Impact") priorisiert werden. Zudem ist es notwendig, Abhängigkeiten zwischen Anforderungen zu erkennen („web of requirements"). Zentrum oder Anker der Anforderungsnetze sind die Kernanforderungen, also jene, welche starke Auswirkungen auf Zeitplanung, Aufwand und/oder Architektur haben können. Dazu ist es nicht notwendig, alle Anforderungen im Detail bis zum Grund zu verstehen. Manche können lediglich grob erfasst werden, es reicht eventuell eine informelle Beschreibung. Aber die wesentlichen Punkte müssen durchdacht, modelliert und ständig beobachtet werden, denn sie bilden mit ihrem Abhängigkeitsgeflecht den Kern von Releases und Iterationen. Wir gehen also von einem „Anforderungswald", bei dem man vor lauter „Bäumen" keine Details mehr erkennt, zu einem Netzwerk von Anforderungsgruppen über (s. Abbildung 1).

 

Proaktives Anforderungsmanagement

Abbildung 1: Management-Fokus auf die Kernanforderungen

 

Anforderungsmanagement und Architektur

Besonders wichtig ist die Abhängigkeit zwischen Anforderungen und Softwarearchitektur. Der Architekt und der Anforderungsmanager überlegen, wie die Architektur beschaffen sein muss, um Funktionalität abzubilden und den wahrscheinlichen Änderungen Raum zu geben. Dazu werden z.B. Design Patterns verwendet, Abstraktionen und Kapselungen herausgearbeitet oder zusätzliche Schichten und Komponenten eingeführt. Auch hier ist wieder Angemessenheit gefordert, denn es wäre kontraproduktiv, die Architektur in jeder Beziehung konfigurierbar und flexibel zu machen. Das gilt umso mehr, da solche Architekturentscheidungen immer Trade-Offs sind. Gewinnt man etwas hinsichtlich einer Eigenschaft (z.B. Änderbarkeit), so verliert man potentiell bei anderen Eigenschaften (z.B. Wartbarkeit).

Um begründete Architekturentscheidungen fällen zu können, müssen die architekturrelevanten Anforderungen (ein Subset der Kernanforderungen) möglichst früh im Projekt adressiert werden. Geht das nicht, so gilt es, die davon abhängigen Entscheidungen so spät wie verantwortlich möglich zu treffen – und nicht vorschnell auf unsicherer Basis. Hier geht das Team eine geplante Unsicherheit ein. Das ist der Preis, den man für die Anwendung des proaktiven Anforderungsmanagement zahlt. Im klassischen Fall hat man zwar eine scheinbare Sicherheit, die allerdings nur über ein umso größeres tatsächliches Risiko hinwegtäuscht.

 

Agile Projekte brauchen proaktives Anforderungsmanagement

Der Schnitt von Iterationen wird im Wesentlichen durch Anforderungen gesteuert.  Erst proaktives Anforderungsmanagement versetzt das agile Vorgehen in die Lage, seine Iterationen sinnvoll zu planen, da man sie an den Kernanforderungen ausrichten kann. Erst durch proaktives Anforderungsmanagement wird die Steuerungsfähigkeit eines agilen Projekts hergestellt. Vielleicht muss man für voraussichtliche Änderungen bereits Puffer oder entsprechende Ressourcen einplanen? Oder vielleicht sogar eskalieren – je früher desto besser? Direkte Auswirkungen auf die Projektsteuerung sind die Folge.

 

Fazit –  Kommunikation ist die Kernkompetenz für proaktives Anforderungsmanagement

Durch proaktives Verhalten wandelt sich der Fokus des Anforderungsmanagements: Angemessenheit statt Perfektion, Vorausdenken statt Verwalten, Hinterfragen statt Nacherzählen. Kommunikation ist Trumpf! Es ist jedoch nicht umsonst zu haben: man benötigt verantwortliche, projektbegleitende Anforderungsmanager und ein Team, das mit der geplanten Unsicherheit umgehen kann.  Aber es lohnt sich: Proaktives Anforderungsmanagement führt zu änderbaren Architekturen, höherer Qualität und erspart den Projekten mühsame und kostspielige Umwege (s. Abbildung 2). Nicht zuletzt ist es eine sehr gute Basis für die Planung agiler Projekte.

 

Anforderungsmanagement Proaktiv

Abbildung 2: Irrwege vermeiden durch proaktives Anforderungsmanagement