Photo_Blog_Wuench_20140812In vielen Projekten wird zwischen unterschiedlichen Anforderungstypen unterschieden. Die Unterteilung nach Kundenanforderungen auf der einen und System- bzw. Komponentenanforderungen auf der anderen Seite ist besonders häufig anzutreffen. Diverse Standards nutzen solche oder ähnliche Begrifflichkeiten ebenfalls, um Anforderungen auf unterschiedlichen Detailebenen eines Systems zu klassifizieren.

Kundenanforderungen beschreiben fachliche Eigenschaften und Funktionen an ein System, die aus Kundensicht direkt erfahrbar sind und erlebt werden können. Solche Anforderungen sind in der Regel eher lösungsneutral, da bei der Definition von Kundenanforderungen davon ausgegangen wird, dass der Kunde die Funktionsweise bzw. technische Gestaltung des Systems nicht unmittelbar zu Gesicht bekommt und deshalb auch nicht mittels Anforderungen beschreibt.

Bei den System- oder Komponentenanforderungen wird dagegen in das System hinein geschaut. Solche Anforderungen können als direkte Antworten auf Kundenanforderungen aufgefasst werden und beschreiben lösungsgetrieben die logische aber auch technische Realisierung eines System oder einer bestimmten Komponente. Systemanforderungen sollen in der Regel nicht vom Kunden verfasst werden, sondern bleiben üblicherweise dem Entwickler oder Systemingenieur vorbehalten, der ein tieferes technisches Verständnis vom jeweiligen Systemgegenstand hat.

In der Realität ist diese theoretische Unterscheidung erfahrungsgemäß schwer einzuhalten. Viele Entwickler aber auch Produktmanager und Anforderungsanalytiker werden wohl zustimmen, dass eine saubere Aufteilung in Kundenanforderungen des Kunden und Systemanforderungen der Entwickler und Architekten nicht immer möglich ist.

Häufig äußert der Kunde nämlich bereits sehr detaillierte und technisch geprägte Anforderungen, die man wohl als Systemanforderungen ansehen würde, aber trotzdem von Kundenseite her gestellt wird. Im Sinne der Essenzbildung kann man als geschulter Analytiker in einer solchen Situation mit dem Kunden sprechen, um ihn durch die Frage nach dem „warum“ nach seinen eigentlichen Zielen und Absichten zu fragen. Auf diese Weise kann man voreilige technische Anforderungen (also ihrem Charakter nach Systemanforderungen) oftmals wieder zu einer Kundenanforderung „zurückbilden“.

Trotzdem gibt es natürlich Kunden mit einem Faible zum Technischen, die detaillierte System- oder Komponentenanforderungen formulieren. Eine Frage, die man zu Beginn eines Projektes daher stellen sollte, ist die nach der sinnvollen Kategorisierung von Anforderungen. Ist es wirklich sinnvoll, zwischen Kundenanforderungen und Systemanforderungen konkret zu unterscheiden oder sorgt dies evtl. nur für Verwirrung bei der richtigen Einordnung?

Oftmals kann es ausreichen, bei der Angabe von Zusatzinformationen (Attribute) für eine Anforderung den Namen oder die Rolle des Stakeholders mit anzugeben. So wird bereits eine indirekte Kategorisierung in Kunden- und Systemanforderungen vorgenommen. Sollte dies nicht ausreichen, lässt sich zusätzlich über die Nennung der Abteilung bzw. des Fachbereiches, der die entsprechende Anforderung verfasst hat, erkennen, um welche Art von Anforderung es sich handelt.

Es mag gewiss auch Gründe für die Klassifizierung einer Anforderung in Kunden- und Systemanforderung geben. Man sollte jedoch bedenken, dass eine saubere Differenzierung bisweilen nicht immer möglich ist. Oftmals formuliert der Kunde nun mal Systemanforderungen und Entwickler „reproduzieren“ nicht selten Kundenanforderungen (um im Falle von schlecht formulierten Anforderungen hinter die eigentliche Absicht des Kunden zu gelangen). Sollten aus solchen Anforderungen im späteren Verlauf Lasten- und Pflichtenhefte erwachsen, kann dies dazu führen, dass Kundenanforderungen im Pflichtenheft landen und umgekehrt.

Beide Bezeichnungen sind also in erster Linie theoretischer Natur und beziehen sich auf die Detaillierung und den Grad der Lösungsbeschreibung einer Anforderung, weniger auf die eigentlichen Urheber. Soll aber eben letzteres ausgedrückt werden, ist eine Unterscheidung zwischen Kundenanforderung und Systemanforderung nicht immer hilfreich, da der Kunde nun mal auch Systemanforderungen schreibt und der Entwickler bisweilen Kundenanforderungen.