Ziele von Anforderungen und Requirements EngineeringKürzlich wurde ich wieder gefragt, wie sich der Aufwand von Requirements Engineering rechtfertigen lässt. Immer noch beobachte ich, dass die Tätigkeit des „systematischen Umgangs mit Anforderungen“, dies ist eine moderne Übersetzung des englischen Begriffs „Requirements Engineering and Management“, zu wenig Akzeptanz innerhalb der Unternehmen findet. Es werden verschiedenste Gegenargumente vorgetragen: Für das Projektmanagement ist es viel zu teuer, für die Entwickler und Fachabteilungen ist es „unmotivierter Mehraufwand“ oder „Overhead für Dokumentation“, für manche agile Teams ist es „alter Hut“ und für erfahrene, gewachsene Fachabteilungen ist es „nicht notwendig, das haben wir schon immer so, ohne Anforderungen, gemacht“.

Gewiss, der systematische Umgang mit Anforderungen kostet Zeit und Geld, und der Aufwand muss adäquat an die Struktur und die Gegebenheiten der Organisation, des zu entwickelnden Produktes oder Dienstleistung angepasst werden.

Anforderungen beschreiben ja die Idee eines Produktes. Sie spiegeln die verschiedensten gewünschten Eigenschaften eines Produktes wider, die später auch realisiert werden sollen. Anforderungen können dabei verschiedene Formen annehmen und sich verändern, siehe dazu auch: „Die Anforderung lebt“ in meinem Blogbeitrag und in meinem OBJEKTspektrum Artikel (PDF).

Worin liegt nun der Nutzen im systematischen Umgang mit Anforderungen?

Ziele auf oberster Ebene

Fangen wir ganz oben an. Auf oberer Unternehmensebene ist es ein Hauptziel, Geld zu verdienen. Dies kann zum Beispiel mit einer Effizienzsteigerung in der Entwicklung und Produktion erreicht werden. Besonders in der Entwicklung sind die Herausforderungen groß, wie im Blogbeitrag von Christian Wünch, „Von Zielen, Ideen und anderen Anforderungen“ zu lesen:

„Die Produktentwicklung ist ein interessantes aber auch unbarmherziges Stück kultureller Evolutions- und Schaffensgeschichte inmitten technologieverwöhnter Gesellschaften…“

Anforderungen dienen durchgehend als Grundlage bei der Entwicklung von komplexen Systemen im gesamten Systems Engineering. Der Umgang mit Anforderungen ist ein Vorausdenken des Produkts, es findet ein „Front Loading“ in der Entwicklung statt, indem Probleme der Entwicklung zeitlich nach vorne gezogen werden. Dadurch werden immense Kosten gespart. Probleme werden sehr früh im Entwicklungsprozess aufgedeckt und gelöst. Probleme, die später ein Vielfaches mehr gekostet hätten.

Ziele im Entwicklungsprozess

Dabei können die Techniken und Methoden des Requirements Engineering eine erhebliche Unterstützung leisten. Sie helfen in vielen Bereichen und auf unterschiedlichen Ebenen. Ich habe hier einmal die wichtigen ZieleNutzen und Ziele von Anforderungen und Requirements Engineering - 2 und Aufgaben des systematischen Umgangs mit Anforderungen zusammengetragen:

  • Kommunizieren

Das Hauptziel von Anforderungen ist, die Kommunikation zwischen den beteiligten Menschen zu unterstützen und zu fördern. Anforderungen stellen in diesem Sinne einen Kommunikationskanal dar. Es geht darum, dass Menschen besser zusammenarbeiten und ein gemeinsames Verständnis von dem gleichen Entwicklungsgegenstand bekommen. Dadurch, dass ich eine Anforderung formuliere, weiß mein Arbeitskollege/mein Kunde/mein Partner genauer, was ich mir gedacht habe. Aufgrund dessen können wir dann diskutieren und uns abstimmen, so dass ein gemeinsames Verständnis der Anforderung erzielt wird.

  • Vereinbaren

Anforderungen unterstützen nicht nur die Kommunikation, sondern sorgen darüber hinaus, dass die beteiligten Personen oder Parteien (Stakeholder) durch die Anforderung eine Vereinbarung treffen. Wenn eine Anforderung zwischen verschiedenen Personen, Parteien oder Bereichen gemeinsam diskutiert, formuliert und abgestimmt ist, dient sie als eine Abmachung oder Vertrag. Damit stimmen alle Stakeholder zu, die Anforderungen so wie vereinbart umzusetzen.

  • Wissen speichern

Oft wird von dem Ziel des Dokumentierens gesprochen. Doch die Dokumentation von Anforderungen ist kein Selbstzweck, sondern dient übergeordneten Zielen in der Systementwicklung. Die Anforderung dient dem Speichern von Wissen. Personen, die zuvor nicht beteiligt waren, können auf dieses Wissen, das in der Anforderung festgehalten ist, zugreifen. Dies trifft auch auf die Beschreibung von Altsystemen zu, die üblicherweise für die Entwicklung zukünftiger Systeme mitverwendet wird. „Wissen speichern“ kann natürlich durch Dokumentation geschehen, doch auch andere Maßnahmen wie z.B. elektronische Speicherung oder durch die Existenz eines realisierten (Vorgänger-)systems sind möglich.

  • Wissen wiederverwenden

Ein mit Wissen speichern zusammenhängendes Ziel ist, das gespeicherte Know-how für andere Beteiligten bereitzustellen. Das schließt auch mit ein, die Anforderungen zu späterer Zeit für andere Entwicklungen oder Produkte wiederzuverwenden.

  • Transparenz herstellen

Die Speicherung dieses Wissens kann auch dazu verwendet werden, den Entwicklungshergang transparent zu machen. Eine wichtige Ausprägung dieses Ziels ist dabei, die Nachverfolgbarkeit für bestimmte Beteiligte herzustellen. Muss das Produkt zum Beispiel von einer externen Stelle zertifiziert werden, wird oft eine Nachweisbarkeit des Entwicklungsvorgangs gefordert. Kunden und Beteiligte wollen wissen, ob die Anforderung, die gestellt wurde, richtig implementiert wurde, und auch, wie sie umgesetzt wurde.

  • Komplexität beherrschen

Um die Komplexität von Systemen mit vielen tausend Anforderungen handhabbar zu machen, ist ein systematischer Umgang unverzichtbar. Anforderungen helfen in der Darstellung und Verwaltung von Wissen auf den unterschiedlichsten Ebenen. Mit einem systematischen Ansatz für Anforderungen kann man zum Beispiel das Produkt aus verschiedenen Perspektiven betrachten, etwa mit einer Struktur-, Verhaltens- oder Funktionsperspektive. Auch Methoden zur Transparenz und Wissensspeicherung tragen dazu maßgeblich bei. Komplexe Systeme können so besser greifbar und verständlich gemacht werden.

Gewinnbringender Nutzen

Erreicht man diese Ziele, kann man einen Nutzen erzeugen, der letztendlich dem Unternehmens-Hauptziel „Geld verdienen“ dient. Dies passiert jedoch nur, wenn man die Techniken und Methoden gezielt und vernünftig an die Gegebenheiten der Organisation und des Produkts anpasst.

Als Ergebnis lassen sich nun einige Argumente den anfangs erwähnten „Zweiflern“ entgegensetzen: Das Projektmanagement kann viel Geld und Zeit sparen, bezogen auf den ganzen Lebenszyklus des Produktes. Die Entwickler und Fachabteilungen werden die viel höhere Qualität und Kommunikation in der Entwicklungsarbeit schätzen, falls die Methoden und Techniken in einem vernünftigen Umfang eingesetzt werden. Und auch im agilen Umfeld lohnt es sich, intelligent mit Anforderungen (dort heißen sie“Backlog-Item“, „User Story“, etc.) umzugehen: „Die bewährten Praktiken des Requirements Engineering sind auch im agilen Umfeld wertvoll“! schreibt Markus Eberhardt in seinem Blogbeitrag.