Anforderungsanalyse
Unabhängig der Größe deines Software-Projekts kommst du um das Thema der Anforderungsanalyse nicht herum. In diesem Beitrag erfährst du, warum Projekte häufig an Anforderungen scheitern und wie du es besser machen kannst.
Das Wichtigste zusammengefasst
- Software-Projekte werden oftmals teurer, wenn die Anforderungsanalyse nicht ausreichend durchgeführt wurde.
- Die Anforderungsanalyse besteht aus der Erhebung der Anforderungen, der Analyse dieser, der Spezifikation und dessen Validierung.
- Anforderungen lassen sich in funktionale Anforderungen, Qualitätsanforderungen und Randbedingungen unterteilen.
- Damit Anforderungen wirklich verstanden werden, müssen sie unter anderem eindeutig, klar, verständlich und präzise sein.
Software-Projekte scheitern oft an den Anforderungen
„Einen Fehler nach der Auslieferung der Software zu finden und zu beheben ist oft 100 Mal teurer als diesen in der Anforderungs- und Entwurfsphase zu finden und zu beheben."
Dieser Satz stammt vom renommierten Softwareentwickler Barry Boem, der im Jahr 2001 die Software Defect Reduction Top 10 List veröffentlicht hat. Um das Scheitern deines Software-Projekts zu vermeiden, ist es daher entscheidend, sich früh und detailliert mit dem Thema der Anforderungsanalyse zu beschäftigen.
Auch wenn die Theorie bereits hinreichend über die Gründe erklärt hat, scheitern Software-Projekte leider immer noch viel zu häufig. Nach dem Chaos Report 2015 der Standish Group sind 2015 64 Prozent der Projekte gescheitert oder waren nur teilweise erfolgreich. Dabei gab es eine Unterscheidung: Bei kleinen Projekten lag die Erfolgsquote immerhin bei 61 Prozent. Je größer jedoch die Projekte wurden, desto wahrscheinlicher waren sie zum Scheitern verurteilt. Die Technologien verändern sich zwar, aber die Probleme bleiben die gleichen.
Diese Erkenntnisse sollten genügend Motivation bieten, sich intensiv mit diesem Thema auseinanderzusetzen und es nicht nur als notwendiges Übel zu betrachten.
Ablauf der Anforderungsanalyse
Die Anforderungsanalyse ist ein vierstufiger Prozess mit dem Ziel, die Anforderungen an ein Software-System zu ermitteln, zu analysieren, zu spezifizieren und zu validieren. Wir halten uns hier an die Begriffe aus dem IEEE-Standard, allerdings ist das Vorgehen bei anderen Standards im Grunde genommen sehr ähnlich.
- Bei der Anforderungserhebung identifizierst und sammelst du alle Anforderungen. Dies erfolgt durch Interviews, Beobachtungen, Fragebögen, Workshops oder ähnlichen Methoden mit den Stakeholdern.
- Durch die Anforderungsanalyse werden die Anforderungen analysiert und strukturiert, indem du diese kategorisierst, priorisierst und Widersprüche eliminierst, falls Stakeholder gegensätzliche Anforderungen genannt haben. Für die Erledigung dieser Aufgabe kannst du Szenarien, Use-Case Diagramme oder Prototypen nutzen.
- Die Anforderungsspezifikation dokumentiert die Anforderungen. In der Regel lieferst du eine Sammlung von Anforderung und eine Software-Agentur erstellt daraus die finale Spezifikation.
- Letztlich hilft die Anforderungsbewertung bei der Prüfung der Spezifikation auf Konsistent und Realisierbarkeit. Des Weiteren müssen die Stakeholder prüfen, ob ihre Wünsche in den Anforderungen abgebildet sind.
Anzumerken ist noch, dass dieser Prozess mehrfach durchgeführt wird, beispielsweise, um Anforderungen zu verfeinern oder Anforderungen im späteren Projektverlauf hinzuzufügen. Bei jeder Anforderung, die du hinzufügst, muss geprüft werden, ob diese nicht gegensätzlich zu einer anderen Anforderung ist.
Die Anforderungsspezifikation ist ein lebendes Dokument, welche im Laufe des Projekts immer wieder angepasst werden muss, damit sowohl dein Dienstleister als auch du selbst immer weißt, wie der aktuelle Stand ist. Oftmals werden dafür Anforderungsmanagement-Tools genutzt, jedoch reicht in einigen Fällen auch ein Dokument mit entsprechender Versionsverwaltung.
Was ist eine Anforderung?
Eine Anforderung ist eine Aussage, die beschreibt, was eine Software leisten muss, um einen bestimmten Zweck zu erfüllen. Anforderungen lassen sich in funktionale und nicht-funktionale (Qualitätsanforderungen, Randbedingungen) Anforderungen kategorisieren.
Anhand einer mobilen App, bei der sich Unternehmen und Aushilfen zusammenfinden können, erkennen wir die Unterschiede der verschiedenen Anforderungsarten.
- Funktionale Anforderungen beschreiben die Funktionen der Software.
- Die App muss die Möglichkeit bieten, sich als Aushilfe oder als Unternehmen zu registrieren.
- Die App muss eine Suchfunktion beinhalten, mit der Aushilfe und Unternehmen sich gegenseitig suchen können.
- Die App muss es Aushilfen und Unternehmen ermöglichen, Chat-Nachrichten aneinander zu senden und zu empfangen.
- Qualitätsanforderungen beschreiben qualitative Eigenschaften der Software hinsichtlich der Funktionalität, Zuverlässigkeit, Benutzbarkeit, Effizienz, Änderbarkeit und Übertragbarkeit. Diese Qualitätsmerkmale werden durch die ISO 9126 vorgegeben.
- Effizienz: Die Suchfunktion muss die Ergebnisse innerhalb von 2 Sekunden anzeigen, um eine reibungslose Benutzererfahrung zu gewährleisten.
- Funktionalität: Die Chat-Funktion sollte eine Ende-zu-Ende-Verschlüsselung verwenden, um die Privatsphäre der Nutzer zu schützen.
- Benutzbarkeit: Die App muss in den Sprachen Deutsch und Englisch verfügbar sein.
- Randbedingungen beschreiben organisatorische oder technologische Bedingungen, welche die Software erfüllen muss. Bedingungen dieser Art grenzen den Lösungsraum weiter ein.
- Die App muss die Datenschutz-Grundverordnung (DSGVO) berücksichtigen und rechtskonform umsetzen.
- Die App muss auf den in den letzten zwei Jahren veröffentlichten Versionen von iOS und Android lauffähig sein.
- Die App sollte bis zum 31. Januar fertiggestellt sein.
Was machen gute Software-Anforderungen aus?
Gute Anforderungen sorgen für den Erfolg deines Projektes. Sie sind die Grundlage für den weiteren Projektverlauf. Damit Anforderung wirklich gut werden, müssen gewisse Eigenschaften erfüllt sein.
- Eine Anforderung muss atomar sein, darf also nicht teilbar sein.
- Falsch: Die Software muss eine Such-, Bezahl- und Nachrichtenfunktion anbieten.
- Richtig: Aufteilung der drei Anforderungen in separate Anforderungen.
- Begründung: Für das bessere Verständnis müssen die Anforderungen aufgeteilt und separat dargestellt werden.
- Eine Anforderung muss eindeutig formuliert werden.
- Falsch: Die App soll flexibel sein.
- Richtig: Nutzer sollen ihre Nutzergruppe jederzeit ändern können.
- Begründung: Der Begriff flexibel ist doppeldeutig und kann verschiedene Dinge meinen. Daher muss genau beschrieben werden, was gemeint ist.
- Eine Anforderung muss machbar sein, also innerhalb der Kosten- und Zeitvorgaben realisierbar sein.
- Falsch: Die App muss auf allen Geräten funktionieren.
- Richtig: Die App muss mindestens auf allen Apple- und Android-Versionen funktionieren, die in den letzten 1,5 Jahren veröffentlicht wurden.
- Begründung: Die Aussage der Verfügbarkeit auf allen Geräten ist zu vage, denn es gibt etliche veraltete Versionen, die schwer zu unterstützen sind und nicht den neusten Stand der Technik erlauben.
- Eine Anforderung muss rechtskonform sein.
- Falsch: Die Webanwendung soll alle Nutzer zu Analysezwecken tracken.
- Richtig: Die Webanwendung soll nur Nutzer zu Analysezwecken tracken, die der Nutzung von Analyse-Cookies zugestimmt haben.
- Begründung: Das Tracken ohne Zustimmung des Nutzers verstößt gegen die Datenschutz-Grundverordnung.
- Eine Anforderung muss klar und verständlich formuliert sein.
- Falsch: Die App soll Integrationen ermöglichen.
- Richtig: Die App soll so entwickelt werden, dass im späteren Verlauf des Projekts ein externes Bezahlsystem integriert werden kann.
- Begründung: Die Anforderung war nicht verständlich und musste weiter ausspezifiziert werden.
- Eine Anforderung muss präzise formuliert werden.
- Falsch: Unternehmen müssen geeignete Aushilfen suchen können.
- Richtig: Unternehmen müssen Aushilfen anhand der kombinierbaren Auswahl der Sterne-Bewertung, der Erfahrung in Jahren und dessen Entfernung suchen können.
- Begründung: Das Subjekt geeignete Aushilfen ist nicht präzise genug und muss daher näher beschrieben werden.
- Eine Anforderung muss überprüfbar sein.
- Falsch: Die Software muss sicher sein.
- Richtig: Die Software muss alle Sicherheitslücken des OWASP Top 10 Standards berücksichtigen und vermeiden.
- Begründung: Der Begriff der Sicherheit lässt sich nicht überprüfen, außer dieser wird genau definiert.
- Eine Anforderung muss abstrakt sein, darf also nicht schon die Software-Lösung vorgeben.
- Falsch: Die App muss die Liste der Nutzer statt aus der Datenbank aus dem Cache auslesen und anzeigen.
- Richtig: Die App muss die Liste der Nutzer innerhalb von 2 Sekunden auslesen und anzeigen.
- Begründung: Selbstverständlich ist eine Cache-Abfrage schneller als eine Datenbankabfrage. Allerdings sollte das an dieser Stelle noch nicht entschieden werden, sondern lediglich definiert werden, was die Software wie tun soll.
Die Anforderungsliste ist gut gelungen, wenn sie komplett und konsistent ist. Anforderungen sollten auch nicht redundant vorkommen. Des Weiteren ist die Liste im besten Fall modular bzw. strukturiert aufgebaut. Das bedeutet, dass Anforderungen je nach Bereich voneinander getrennt werden. Anforderungen zur Suchfunktion sollten in einem anderen Bereich stehen als Anforderungen zum Chat-System.
Auch ist es wichtig, den Anforderungen eine Wichtigkeit zuzuordnen. Indem sich die Entwicklung zunächst auf die wichtigsten Kriterien fokussiert, kann sichergestellt werden, dass das Projekt in der geplanten Zeit und mit dem festgelegten Budget umgesetzt werden. Oftmals bleibt eine Software unvollendet, weil versucht wird, alle Anforderungen unabhängig von der Priorität umzusetzen, anstatt sich zunächst auf das Wesentliche zu konzentrieren. Es werden drei Prioritäten unterschieden:
- Die Muss-Anforderungen umfassen alle unverzichtbaren Funktionen oder Eigenschaften, die die Software erfüllen muss, um erfolgreich zu sein.
- Die Soll-Anforderungen hingegen sind empfohlene Funktionen oder Eigenschaften, die die Software im besten Fall erfüllen sollte. Hierbei können je nach Budget- und Zeitbeschränkungen Abstriche gemacht werden.
- Die Kann-Anforderungen schließlich sind Funktionen oder Eigenschaften, die die Software optional erfüllen kann, sofern noch ausreichend Zeit und Budget zur Verfügung stehen.
Berechne dein Projekt jetzt kostenfrei & unverbindlich für Webanwendungen & Apps.