Anforderungen

Anforderungen definieren, was ein Produkt leisten muss — eine dokumentierte Erwartung an das Ergebnis der Durchführung eines Projekts. Dieses Dokument erfasst die Erwartungen des Kunden sowie die des Entwicklers hinsichtlich des Programms, seiner Funktionen und des Projekts als Ganzes. Anforderungen umfassen Merkmale, Kosten, Zeitplan und Risiken. Somit stellen Anforderungen eine Aussage darüber dar, was entwickelt werden muss, bzw. eine präzise quantitative Beschreibung dessen, was als Ergebnis der Projektdurchführung erwartet wird. Eine mangelhafte Definition der Anforderungen ist die Hauptursache für Probleme während der Projektdurchführung.

Anforderungen legen fest, was getan werden muss, wie gut und unter welchen Restriktionen. Wenn die Anforderungen falsch sind, werden Projekt und Produkt mangelhaft sein. Anforderungen, Restriktionen und Annahmen zerlegen das Problem in Teile. Dies bestimmt den Gesamterfolg des Projekts.

Arten von Anforderungen:

  • Funktionale Anforderungen legen fest, was ein bestimmtes Systemelement tun muss.
  • Leistungsanforderungen legen die quantitativen Parameter der entsprechenden vom System ausgeführten Funktionen fest.
  • Einschränkende Anforderungen ergeben sich aus Einschränkungen der Betriebsart, Umgebungsbedingungen, Sicherheitsaspekten oder der Einhaltung gesetzlicher Vorschriften.
  • Verifikationsanforderungen geben die Sicherheit, dass das System die festgelegten Eigenschaften in seiner tatsächlichen Betriebsumgebung besitzt.
  • Schnittstellenanforderungen legen die Funktionen, Eigenschaften, Toleranzen und Restriktionen aller Schnittstellen fest.
  • Betriebsanforderungen legen die Einsatzbereitschaft des Systems fest, wobei der Fokus auf der Systemleistung liegt, und definieren zudem, wie das System mit den Nutzern interagiert.

In der englischsprachigen Literatur wird das Akronym SMART verwendet, um sich die Merkmale guter Anforderungen zu merken.

  • Specific (spezifisch) — Anforderungen dürfen sich nur auf ein einziges Merkmal des Projekts oder eine Eigenschaft des Systems beziehen. Sie sollten in Bezug darauf formuliert werden, was getan werden muss und wie gut, aber niemals in Bezug auf eine mögliche Lösung — wie es zu tun ist.
  • Measurable (messbar) — ein messbarer Parameter wird objektiv und quantitativ ausgedrückt.
  • Achievable (erreichbar) — eine Anforderung muss technisch zu vertretbaren Kosten erreichbar sein.
  • Relevant (relevant) — eine Anforderung muss der gewählten Systemebene entsprechen.
  • Traceable (nachverfolgbar) — Anforderungen niedrigerer Ebenen müssen sich ausdrücklich aus Anforderungen höherer Ebenen ableiten und/oder durch diese gestützt werden. Anforderungen ohne „übergeordnete“ Anforderungen werden als „Waisen“ betrachtet und müssen hinsichtlich der Notwendigkeit ihrer Umsetzung bewertet werden.

Notwendigkeit. Besteht Zweifel daran, ob eine Anforderung benötigt wird, so frage man einfach: „Welcher Schaden entsteht dem System, wenn diese Anforderung nicht in die Liste aufgenommen wird?“ Wenn keine Antwort gefunden werden kann, ist die Anforderung wahrscheinlich unnötig.

Verifizierbarkeit. Sobald eine Anforderung formuliert ist, muss festgelegt werden, wie sie überprüft werden kann. Dazu muss ein geeignetes Konformitätskriterium ausgewählt werden.

Erreichbarkeit. Um erreichbar zu sein, muss eine Anforderung innerhalb des vorgegebenen Zeitplans und Budgets technisch realisierbar sein, unter Berücksichtigung zusätzlicher Restriktionen. Besteht Ungewissheit über die technische Realisierbarkeit einer Anforderung, muss eine geeignete Studie oder weitere Untersuchung durchgeführt werden. Bleibt die Ungewissheit auch danach bestehen, sollte anstelle einer Anforderung ein Ziel formuliert werden. Es ist klar, dass eine Anforderung selbst dann unerreichbar sein kann, wenn sie technisch realisierbar ist — etwa aufgrund von Kosten, Zeitplan oder anderen Restriktionen wie dem Gewicht. Es ist sinnlos, eine Anforderung für etwas zu formulieren, das unmöglich zu erreichen ist; man muss pragmatisch sein.

Klarheit. Jede Anforderung muss einen einzigen Gedanken ausdrücken und prägnant sowie einfach formuliert sein. Wichtig ist, dass die Anforderung klar und eindeutig ist. Gute Anforderungen benötigen oft nicht mehr als einfache Sätze.

Eine Anforderung sollte positiv formuliert werden und niemals mit einer Verneinung beginnen. Sie muss grammatikalisch korrekt sein und darf keine Tippfehler oder Auslassungen enthalten. Auf allen Ebenen des Systems muss eine einheitliche Terminologie verwendet werden.