Wie viele Anforderungen brauchen wir wirklich?

Es ist schon erstaunlich, wie viele – oder wie wenige – Anforderungen für vergleichbare Produkte artikuliert werden. Die Automobilindustrie ist notorisch für die teilweise unglaublich hohe Anzahl von Anforderungen (Audi nannte kürzlich in einer Keynote die Zahl „60 Millionen“). Natürlich ist das nicht ganz fair: Schließlich müssen auf vielen Ebenen Anforderungen formuliert werden. Trotzdem: Für vergleichbare Produkte finden wir manchmal zehntausende von Anforderungen, und manchmal nur eine Handvoll. Warum ist das so, und was lernen wir daraus?

Ebenen trennen

Wenn wir einen fertigen Microchip mit Milliarden von Transistoren verbauen, dann würden wir die internen Anforderungen des Chipherstellers natürlich nicht mitzählen. Daher ist das Beispiel Audi (60 Millionen Anforderungen) nicht ganz fair: Zum Einen geht es hier um 100 Fahrzeugmodelle, zum Anderen wurden hier sicher Anforderungen von verschiedenen Ebenen mitgezählt (Kundenanforderungen, Systemanforderungen, etc.). Doch selbst wenn klar getrennt wird, finden wir im Automobilbereich große Mengen von Anforderungen: Bei der Ausschreibung einer Komponente ist es nicht ungewöhnlich, Lastenhefte mit Zehntausenden von Anforderungen zu bekommen.

Zehntausende Anforderungen in einem Lastenheft sind nicht ungewöhnlich Twittern

Bei einem Lastenheft sollten wir davon ausgehen, dass die Anforderungen auf der selben Ebene sind, zumindest größtenteils. Die Anforderungen sollten beschreiben, wie sich die Komponente verhält, ohne auf die Umsetzung einzugehen. Ob das immer der Fall ist, schauen wir uns gleich an.

Manchmal reichen drei Anforderungen

Ein krasser Gegensatz sind die drei Anforderungen, mit denen Wikispeed die Karosserie beschrieben hat (ab 8:45 im Video):

  • Must pass the offset frontal impact test
  • Must cost no more than $5000 in material
  • Must have 3 m³ of lockable space

Nun kann man zu Recht sagen, dass dies nicht ausreichend ist, um die Karosserie zu beauftragen. Ich gehe gleich darauf ein, was noch fehlt. Aber: selbst wenn hier etwas fehlt, und traditionell bei den zehntausenden Anforderungen ein paar zu viel dabei sind, besteht hier eine nicht zu ignorierende Diskrepanz. Warum?

Zusammenfassung von Joe Justice / Wikispeed bezüglich Anforderungen. Quelle: ReConf 2017 Keynote, 44:40

Schnittstellen

Ein wichtiger Aspekt sind Schnittstellen: In einem typischen Lastenheft sind die Schnittstellen ebenfalls beschrieben. Wenn diese nicht explizit von den Anforderungen getrennt werden, werden sie typischerweise mitgezählt.

Anforderungen und Schnittstellen über einen Kamm zu scheren ist keine gute Idee: Die Anforderungen beschreiben, was entwickelt werden soll. Die Schnittstellen stellen die Rahmenbedingungen dar, unter denen die Lösung realisiert werden soll. Dies impliziert aber unterschiedliche Stakeholder: Die Anforderungen haben eine Bedeutung für „Außenstehende“: Nutzer, Investoren und Behörden. Die Schnittstellen hingegen betreffen lediglich die Parteien, die diese Nutzen. Also bei der Karosserie wäre das bspw. das Team, das für das Chassis verantwortlich ist, da diese beiden Teile miteinander verbunden werden sollen. Die können das untereinander klären, ohne dass die externen Stakeholder herangezogen werden müssen.

Eine andere häufig auftretende Situation ist die Nutzung einer Standardschnittstelle: Bspw. würde es dem Entwickler einer Kaffeemaschine nie einfallen, den Stecker für das Stromnetz zu spezifizieren. Es würde reichen, den entsprechenden Standard zu referenzieren.

Ebenen werden Durchschlagen

Auch wenn es bis hierhin nicht explizit erwähnt wurde: Wir wollen natürlich sauber voneinander getrennte Schichten, Module oder Komponenten. Am liebsten würden wir die Komponenten von der Stange kaufen, ohne irgendetwas von deren Innenleben zu erfahren. Leider ist das leichter gesagt als getan: In der Praxis werden häufig die Kapselungen der Komponenten durchbrochen. Dafür gibt es viele Gründe, von denen zwei Hervorzuheben sind:

  1. Unzureichende Erfahrung beim Schreiben von Anforderungen. Gute Anforderungen zu schreiben ist verdammt schwer! Ein beliebter Anfängerfehler ist es, das „wie“ zu beschreiben, und nicht das „was“.
  2. Funktionale Aspekte ziehen sich durch viele Schichten. Eine Funktion (z.B.: „Straße beleuchten“ kann sich durch viele Schichten ziehen: Wie geht man damit um, soll diese auf jeder Ebene wiederholt werden? Zudem schlägt auch manchmal eine Technologie zum Kunden durch, die mit der Funktion gar nichts zu tun hat. Beispiele sind „Xenon-Licht“ oder „Intel inside“. Auch da ist die Trennung schwer aufrechtzuerhalten.

Verschlimmert wird die Situation auch dadurch, dass gerade beim dokumentenbasierten Arbeiten die Zusammenhänge und Abhängigkeiten nicht immer klar sind. Da werden dann Anforderungen von Generation zu Generation weiterkopiert, weil sich niemand traut, diese zu Löschen. Sie könnten ja wichtig sein.

Zu viele Anforderungen sind ungesund!

Die Eingangsfrage war: Wie viele Anforderungen brauchen wir wirklich? Diese Frage lässt sich nicht pauschal beantworten, aber es gibt Richtwerte. Diese Richtwerte gehen Hand in Hand mit anderen Empfehlungen. Zum Beispiel können wir schlecht eine Empfehlung für die Länge eines Lastenhefts aussprechen, ohne vorher zu klären, ob die Schnittstellen Teil des Lastenhefts sind oder nicht.

Daher meine Empfehlungen:

  • Die Effektivität steht und fällt mit dem Aufbrechen des zu entwickelnden Systems. Wenn ein System schlecht geschnitten ist, verkompliziert dies künstlich die Schnittstellen und frustriert das Team.
  • Schnittstellen sollen nicht mit Anforderungen vermischt werden. Außerdem sollen Anforderungen das Problem, nicht die Lösung beschreiben. Das Arbeiten mit Schnittstellen könnte noch mal ein eigener Artikel werden.
  • Die Anforderungen sollten auf maximal 5 Seiten passen. Hierbei sind Deckblatt, etc. nicht mitgerechnet, also wirklich nur der Anforderungstext. Diese Regel darf gebrochen werden. Aber wir müssen uns an der Aufnahmefähigkeiten des Menschen orientieren. Auf fünf Seiten kann man noch vergleichsweise einfach Widersprüche erkennen. Auf 50 Seiten ist das ein gutes Stück schwieriger. Ich habe hier übrigens bewusst von „Seiten“ geredet. Es können natürlich auch Modelle benutzt werden. In dem Fall sollte eine „Textuelle Repräsentation“ des Modells nicht mehr umfassen. Und wenn es wesentlich mehr werden sollte: Zurück zum ersten Punkt und anders (oder weiter) aufbrechen.

Fazit

Drei Anforderungen für eine Karosserie ist extrem, und viele Hersteller werden schon praktisch nicht in der Lage sein, so extrem vorzugehen. Aber 10.000 Anforderungen für ein Lastenheft ist eine Zeitbombe, da in so einem Werk garantiert dutzende von Fehlern schlummern.

Fünf Seiten Anforderungen, ohne Schnittstellen, dass ist meine Pi-Mal-Daumen-Empfehlung. Damit kann man arbeiten.