Anforderung

R 2.0.0

Was ist eine Anforderung?

Was ist eine Anforderung?

Eine Anforderung ist eine Aussage über die notwendige Beschaffenheit oder Fähigkeit,

  1. die von einer Person zur Erreichung eines Ziels benötigt wird,

  2. die ein System oder Systemteile erfüllen oder besitzen muss, um einen Vertrag zu erfüllen oder einer Norm, einer Spezifikation oder anderen, formell vorgegebenen Dokumenten zu entsprechen.

Beschreibung

Anforderungen können von verschiedenen interessierten Personen formuliert werden, wie den Fachbereichen, den Auftraggebern eines Produktes, oder sie werden aus Bedarfen von Kundenbehörden abgeleitet usw. Die Anforderungen werden im Allgemeinen in schriftlicher Form festgehalten zum Beispiel in Checklisten, Lastenheften, Anforderungslisten, Fragenkatalogen usw.

In der Softwareentwicklung ist eine Anforderung (englisch: requirement) eine Aussage über eine zu erfüllende Eigenschaft oder zu erbringende Leistung eines Produktes, Systems oder Prozesses.

Anforderungen werden in der Anforderungserhebung aufgenommen, analysiert, spezifiziert und verifiziert. Der Prozess ist in das Anforderungsmanagement eingebettet. Anforderungen können beispielsweise in einem Dokument (z.B. Lastenheft) oder in einem Tool für das Application Lifecycle Management (ALM) dokumentiert werden. In agiler Softwareentwicklung kommt Anforderungsmanagement-Software zum Einsatz, die das Anforderungsmanagement unterstützt (Backlog in Scrum, Jira etc.).

Abb. 1: Gute vs. schlechte Anforderungen
Abb. 1: Gute vs. schlechte Anforderungen

Eine gute Anforderung sollte folgende Kriterien erfüllen:

  • Abgestimmt (für alle Stakeholder korrekt)

  • Eindeutig (unmissverständlich)

  • Notwendig (muss gültig sein)

  • Konsistent (widerspruchsfrei)

  • Prüfbar (ein Test ermöglicht die Prüfung)

  • Realisierbar (organisatorisch, rechtlich, technisch, finanziell)

  • Verfolgbar (warum wollen wir das nochmal?)

  • Vollständig (keine Interpretationslücken)

  • Verständlich (für alle Stakeholder)

Das bedeutet nicht zwingend, dass eine Anforderung, die diese Kriterien nicht zur Gänze erfüllt, keine relevante Anforderung ist. Es ist von großer Bedeutung alle Anforderungen, die an ein neues Projekt gestellt werden zu erfassen. Die meisten Probleme in der Softwareentwicklung entstehen durch schlechte oder nicht erfasste Anforderungen. Schlechte oder nicht erfasste Anforderungen haben Auswirkungen auf den gesamten Softwareentwicklungszyklus. Nachträgliche Anpassungen ziehen oftmals einen enormen Aufwand mit sich und sind immer sehr kostenintensiv. Daher ist es unabdingbar, direkt von Beginn an bei der Erhebung von Anforderungen sehr sorgfältig vorzugehen und sofern möglich sogar einen geschulten "Requirements Engineer" einzusetzen.

Unscheinbar, aber sehr wichtig ist der Punkt Rückverfolgbarkeit. Es geht darum, zu wissen, warum diese Anforderung sinnvoll ist bzw. wo sie herkommt. Das ist sehr wichtig, da im Laufe des Projektes der Grund für eine Anforderung durchaus mal vergessen wird. Man könnte argumentieren, dass diese dann irrelevant ist. Das ist aber nicht immer korrekt. Es kann beispielsweise sein, dass sich das Projektteam ändert und neu in die Anforderungen einarbeiten muss.

Arten von Anforderungen

Funktionale Anforderungen

Funktionale Anforderungen beschreiben, WAS ein System tun soll (oder nicht).

Die funktionalen Anforderungen sind wichtig, da sie den Softwareentwicklern zeigen, wie sich das System verhalten soll. Wenn das System die funktionalen Anforderungen nicht erfüllt, bedeutet dies, dass es nicht richtig funktioniert.

Beispiel: Das System soll, durch Eingabe der Personenstammdaten ausgeben, ob bekannt ist, dass die Person eine registrierte Waffe besitzt.

Nicht-funktionale Anforderungen

Funktionale Anforderungen beschreiben, WIE gut ein System etwas leisten soll.

Nicht-funktionale Anforderungen beschreiben also Anforderungen an das System und an das Projekt, die nicht-fachlicher Natur sind, jedoch entscheidend zur Anwendbarkeit des Systems beitragen. Dies schließt insbesondere auch Anforderungen des Bereichs IT-Betrieb ein, die es ermöglichen, das System nach der Entwicklung auch den Anwendern zur Verfügung zu stellen. Nicht-funktionale Anforderungen entstehen in der Regel parallel zu den funktionalen Anforderungen und können diesen daher zugeordnet werden.

Nicht-funktionale Anforderungen können unterschiedlichster Art sein. Sie lassen sich generell unterscheiden in Qualitätsanforderungen (Qualitätskriterien gemäß ISO 29119) und Randbedingungen.

Beispiel: Anforderung an das Antwortzeitverhalten einer Anwendung: Die Software darf nicht länger als 2 Sekunden benötigen, um die Ergebnisliste einer Suche darzustellen.

  • Funktionale Eignung besagt, ob der Anwendernutzen durch vollständige und korrekte Umsetzung der spezifizierten funktionalen Anforderungen erreicht wird;

  • Benutzbarkeit bestimmt, wie einfach ein Benutzer mit der Benutzeroberfläche der App interagieren kann, z. B. die Farbe des Bildschirms, die Größe der Schaltflächen usw.;

  • Sicherheit legt fest, wie sicher die App sein soll, beispielsweise sollen FinTech- und Banking-Apps den internationalen und regionalen Sicherheitsstandards entsprechen;

  • Leistungseffizienz bewertet, wie gut die App mit den Ressourcen umgeht und wie das Antwortzeitverhalten der App ist;

  • Wartbarkeit definiert, ob die App während ihres gesamten Lebenszyklus einfach zu unterstützen und zu warten ist und welche Art von Unterstützung sie benötigt, z. B. entweder ein internes Team oder Remote-Support;

  • Kompatibilität stellt sicher, dass die App in verschiedenen Umgebungen mit unterschiedlicher Hardware, Betriebssystemen oder auch im Zusammenspiel mit anderen Anwendungen reibungslos funktioniert;

  • Übertragbarkeit bewertet, ob die Anwendung mit geringem Anpassungsaufwand in andere Umgebungen übertragen und installiert werden kann;

  • Zuverlässigkeit definiert, dass die App in einer bestimmten Umgebung oder für einen bestimmten Zeitraum ohne Fehler verfügbar ist, funktionieren wird und wiederherstellbar ist

Ziel guter Anforderungsspezifikationen ist es, die Erreichung dieser Qualitätsmerkmale in der Entwicklung zu ermöglichen. Die Fehlerkosten können durch eine geringere Zahl an Anforderungsfehlern sowie das frühzeitige Finden gemachter Fehler gesenkt werden. Dabei hilft ein gutes und strukturiertes Anforderungsmanagement.

Anforderungen formulieren - Beispiele und Best Practices

Es gibt eine Vielzahl von weiteren Formaten, die helfen können, die Projektanforderungen zu erstellen. Schauen wir uns die Effektivsten an.

Benutzergeschichten (User Stories)

Im Agilen Vorgehen, das seit einigen Jahren immer populärer wird, ist es üblich die Anforderungen in Form von User Stories zu formulieren. User Stories sind die Anforderungen, die aus Sicht eines Benutzers in einer spezifischen Rolle geschrieben werden. Sie bestehen normalerweise aus mehreren einfachen Sätzen, die das gleiche Muster haben:

Als (Benutzer) möchte ich (Ziel) damit ich (Grund).

Beispiel: Als Projektmanager möchte ich den Fortschritt des Softwareentwicklungsteams verstehen, damit ich dem CEO und den Projektbeteiligten über die Ergebnisse berichten kann.

Idealerweise erstellen die Fachabteilungen die Anforderungen mithilfe von User Stories, wenn sie die Ideen zu Produktmerkmalen und -funktionen an das Scrum-Team weitergeben möchten.

Anwendungsfälle (Use Cases)

In "klassischen" Vorgehensmodellen werden Anforderungen vorzugsweise als Use Cases aufgezeichnet und haben einen größeren Umfang als User Stories. Sie beschreiben unterschiedliche Nutzertypen und sämtliche möglichen Aktionen, die diese in einer Anwendung ausführen kann. Im Gegensatz zu User Stories, die den Endzweck eines Features beschreiben, beinhalten Use Cases den Ablauf von Schritten, die zum Zweck führen.

Wenn man zum Beispiel eine Anwendung für Logistik und die Verwaltung der Lieferkette erstellen möchte, sollten die Softwareentwickler an folgende Rollen denken: Verkäufer, Einkäufer, Lieferanten, Manager, Verteiler und viele andere.

Die Aktionen für diese Rollen können auf folgende Weise aussehen:

  • sowohl die Verkäufer als auch die Käufer können die Produktroute in der Anwendung einsehen;

  • alle Verteiler können Produkte in Lagern verfolgen;

  • alle Benutzer können die Lieferzeit von Artikeln in ihren Konten einsehen, usw.

Erhebung von Anforderungen

Der Digitalisierungsbaukasten des BVA bietet nützliche Tools zur Identifizierung und Erhebung von Anforderungen. Über folgenden Link gelangen Sie direkt zum Digi-Baukasten.

Quellen