Wie man gute Softwareanforderungen schreibt (mit Beispielen)
- Arunabh Satpathy
- 14. Oktober 2024
- 8 Minuten
Softwareanforderungen sind detaillierte Beschreibungen der Merkmale, Funktionen und Einschränkungen eines Softwaresystems. Sie dienen als Leitfaden für Entwickler und als Kommunikationsinstrument für die Beteiligten. Anforderungen lassen sich in zwei Hauptkategorien einteilen:
- Funktionale Anforderungen: Beschreibt bestimmte Verhaltensweisen oder Funktionen, die das System erfüllen muss.
- Nicht-funktionale Anforderungen: Legen Kriterien für Systemleistung, Sicherheit, Benutzerfreundlichkeit usw. fest.
Gut formulierte Anforderungen sorgen für ein gemeinsames Verständnis der Projektziele, verringern Missverständnisse und helfen, eine schleichende Ausweitung des Projektumfangs einzudämmen. Sie bilden zudem die Grundlage für Tests und Validierung und stellen sicher, dass das Endprodukt die angestrebten Ziele erfüllt. Eine effektive Erfassung und Verwaltung von Anforderungen ist entscheidend für den Projekterfolg, da sie sich direkt auf die Entwicklungszeit, die Kosten und die allgemeine Zufriedenheit der Nutzer auswirkt.
Hier sind einige Beispiele für Anforderungen aus verschiedenen Branchen:
Anforderung | Art der Anforderung | Industrie |
|---|---|---|
Das System muss Zugriff auf die vollständigen Patientenakten bieten, wie z. B. Untersuchungsergebnisse, behandelnde Ärzte und die Krankengeschichte. | Funktional | Gesundheitswesen und medizinische Geräte |
Das System muss den PCI-DSS-Standards für die Zahlungsabwicklung entsprechen. | Nicht funktional | Bankwesen und Versicherungen |
Das System muss eine rollenbasierte Autorisierung für Mitarbeiter mit unterschiedlichen Sicherheitsfreigabestufen unterstützen. | Funktional | Regierung und Verteidigung |
Das System muss eine Spitzenauslastung von 10.000 gleichzeitigen Nutzern bewältigen können. | Nicht funktional | Dienstleister und Technologieanbieter |
Das System muss die Sicherheitsnormen ISO 26262 und ASPICE für Fahrzeugsoftware erfüllen. | Nicht funktional | Produktentwicklung für die Automobil-/Luftfahrtindustrie |
Inhaltsverzeichnis
Verwandte Artikel
1. Interessengruppen ermitteln und Rückmeldungen einholen
Der erste Schritt besteht darin, eine umfassende Liste aller am Projekt beteiligten Personen oder Gruppen zu erstellen. Dazu gehören Endnutzer, Führungskräfte, Entwickler, Qualitätssicherer und der Kundensupport.
Um Feedback zu sammeln, nutzen Sie Methoden wie Interviews, Umfragen oder Workshops, um verschiedene Sichtweisen der Beteiligten einzuholen. An dieser Stelle können Sie ein FAQ-Tool nutzen, um Ihr Gedächtnis aufzufrischen und Ihre Ideen zu erweitern.
Halten Sie die Rolle, Erwartungen und Bedenken jedes Stakeholders fest. Diese Informationen helfen dabei, Anforderungen zu priorisieren und sicherzustellen, dass alle relevanten Standpunkte berücksichtigt werden.
Sie können auch KI einsetzen, um die Bedürfnisse der Stakeholder zu ermitteln. Verwenden Sie beispielsweise ein Tool wie Copilot4DevOps, das über mehrere nützliche Funktionen verfügt:
- Q&A-Assistent: Fördert eine klare Kommunikation und eine gründliche Erfassung der Anforderungen und stärkt das Engagement der Beteiligten, indem er Fragen und Antworten mit konkreten Vorgaben zu bestimmten Themen generiert.
- Anforderungserfassung: Ermitteln Sie hochwertige Anforderungen aus den Daten zu den Arbeitsaufgaben. Dies hilft dabei, Lücken zu schließen, die während Ihrer Befragung nicht von allen Beteiligten abgedeckt wurden.
- Dokumentengenerator: Erstellen Sie mit einem Klick Anforderungsdokumente wie Business Requirements Documents (BRD) aus Arbeitsaufgaben.
- 6Cs: Beurteilt eine Anforderung anhand ihrer Klarheit, Prägnanz, Vollständigkeit, Konsistenz, Korrektheit und Konkretheit.
- PABLO: Die PABLO-Kriterien sind ein Rahmenkonzept zur Bewertung von Aufgaben oder Projekten anhand von fünf Faktoren:
- Zweck (der Grund für die Aufgabe)
- Vorteil (der damit verbundene Nutzen)
- Nutzen (die positiven Ergebnisse)
- Langlebigkeit (die Dauer der Wirkung)
- Aufwand (die damit verbundenen Kosten)
Dies trägt dazu bei, fundierte Entscheidungen zu treffen, indem verschiedene Aspekte hinsichtlich Wert und Machbarkeit berücksichtigt werden.
- INVESTIEREN: Die INVEST-Kriterien sind ein Leitfaden für die Erstellung effektiver User Stories in der agilen Entwicklung, der sich auf sechs Merkmale konzentriert:
- Unabhängig (kann separat entwickelt werden)
- Verhandelbar (nach Absprache)
- Wertvoll (bietet dem Nutzer einen Mehrwert)
- Schätzbar (kann geschätzt werden)
- Klein (überschaubar)
- Prüfbar (kann geprüft werden)
Dadurch wird sichergestellt, dass User Stories klar, umsetzbar und realisierbar sind.
- MoSCoW: Die MoSCoW-Methode ist eine Technik zur Priorisierung, bei der Anforderungen in vier Gruppen eingeteilt werden:
- Unbedingt erforderlich (kritisch)
- Sollte (wichtig, aber nicht zwingend)
- Könnte (wünschenswert, aber nicht erforderlich)
- Wird nicht vorhanden sein (am wenigsten kritisch)
Dies hilft dabei, Aufgaben entsprechend ihrer Bedeutung für den Projekterfolg effektiv zu priorisieren.
- SWOT: Die SWOT-Analyse ist ein Instrument der strategischen Planung, mit dem Stärken, Schwächen, Chancen und Risiken einer Organisation, eines Produkts oder einer Dienstleistung ermittelt werden.
2. Wie formuliert man Qualitätsanforderungen?
Das Verfassen guter Anforderungen ist ein Prozess, an dem viele verschiedene DevOps-Disziplinen und Fachleute beteiligt sind.
Hier sind 10 Schritte zum Verfassen guter Softwareanforderungen:
1. Interessengruppen ermitteln und Rückmeldungen einholen
Der erste Schritt besteht darin, eine umfassende Liste aller am Projekt beteiligten Personen oder Gruppen zu erstellen. Dazu gehören Endnutzer, Führungskräfte, Entwickler, Qualitätssicherer und der Kundensupport.
Um Feedback zu sammeln, nutzen Sie Methoden wie Interviews, Umfragen oder Workshops, um verschiedene Sichtweisen der Beteiligten einzuholen. An dieser Stelle können Sie ein FAQ-Tool nutzen, um Ihr Gedächtnis aufzufrischen und Ihre Ideen zu erweitern.
Halten Sie die Rolle, Erwartungen und Bedenken jedes Stakeholders fest. Diese Informationen helfen dabei, Anforderungen zu priorisieren und sicherzustellen, dass alle relevanten Standpunkte berücksichtigt werden.
Sie können auch KI einsetzen, um die Bedürfnisse der Stakeholder zu ermitteln. Verwenden Sie beispielsweise ein Tool wie Copilot4DevOps Plus, das mehrere nützliche Funktionen bietet:
- Q&A-Assistent: Fördert eine klare Kommunikation und eine gründliche Erfassung der Anforderungen und stärkt das Engagement der Beteiligten, indem er Fragen und Antworten mit konkreten Vorgaben zu bestimmten Themen generiert.
- Anforderungserfassung: Ermitteln Sie hochwertige Anforderungen aus den Daten zu den Arbeitsaufgaben. Dies hilft dabei, Lücken zu schließen, die während Ihrer Befragung nicht von allen Beteiligten abgedeckt wurden.
2. Das Problem definieren
GehenSie das ProblemmithilfevonTechniken wie den„5 Warum-Fragen“an.Indem Sie auf jede Antwort wiederholt mit „Warum?“ nachfragen, können Sie das zugrunde liegende Problem aufdecken.
Sobald Sie das zugrunde liegende Problem identifiziert haben, beschreiben Sie die aktuelle Situation und das angestrebte Ergebnis. Diese Beschreibung sollte klar und konkret sein und von allen Beteiligten mitgetragen werden.
3. Allgemeine Merkmale und Funktionen skizzieren
Um die Funktionen zu ermitteln, die Ihre Software benötigt, erstellen Sie eine Liste potenzieller Funktionen und priorisieren Sie diese mithilfe von Methoden wie MoSCoW, PABLO oder INVEST.
Sie können auch KI nutzen, um Merkmale aus Arbeitsauftragsdaten zu generieren, wie hier gezeigt.
4. Konkrete, umsetzbare Anforderungen formulieren
Erstellen Sie als Nächstes ein übergeordnetes Produkt-Backlog oder eine Feature-Liste, um diese Ideen zu strukturieren. Definieren Sie für jedes Feature sowohl funktionale als auch nicht-funktionale Anforderungen. Nutzen Sie Methoden wie die SMART-Kriterien (spezifisch, messbar, erreichbar, relevant, terminiert), um sicherzustellen, dass jede Anforderung klar definiert und umsetzbar ist.
Dokumentieren Sie Ihre Anforderungen erneut und nutzen Sie gegebenenfalls Vorlagen. Anhand der Dokumentation lässt sich nach der Umsetzung feststellen, ob die Anforderung erfüllt wurde.
5. Anforderungen priorisieren
Durch Priorisierung lässt sich der Projektumfang besser steuern und sicherstellen, dass die wichtigsten Funktionen zuerst umgesetzt werden. Nutzen Sie Priorisierungsmethoden wie SWOT, Kano oder gewichtete Bewertung, um Anforderungen so zu priorisieren, dass sie den Projektanforderungen entsprechen.
Berücksichtigen Sie bei der Priorisierung Faktoren wie den geschäftlichen Nutzen, die Auswirkungen auf die Nutzer und die Komplexität der Umsetzung. Durch die Einbeziehung wichtiger Stakeholder bleiben die Projektziele im Blick. Dokumentieren Sie die Gründe für Priorisierungsentscheidungen, um einen Kontext für spätere Referenzzwecke zu schaffen und die Erwartungen der Stakeholder zu steuern.
6. Die Anforderungen mit den Beteiligten besprechen
Prüfen Sie gemeinsam mit den Beteiligten, ob die Anforderungen vollständig und korrekt sind. Nutzen Sie Methoden wie Walkthroughs, Fokusgruppen oder Begutachtungen, um die Anforderungen zu überprüfen und Feedback einzuholen.
Dokumentieren Sie alle Rückmeldungen und Entscheidungen, die während der Überprüfungen getroffen wurden. Diese Dokumentation hilft dabei, Änderungen nachzuverfolgen und die Entwicklung der Anforderungen im Laufe des Projekts nachzuvollziehen.
7. Auf Grundlage des Feedbacks verfeinern und präzisieren
Bevor Sie fortfahren, klären Sie alle mehrdeutigen oder verwirrenden Anforderungen oder Änderungen an den Anforderungen mit den Beteiligten ab, um sicherzustellen, dass sich alle Beteiligten über das Endprodukt einig sind.
Lösen Sie etwaige Konflikte oder Unstimmigkeiten zwischen den Bedürfnissen verschiedener Beteiligter durch Gespräche und Verhandlungen. Aktualisieren Sie das Anforderungsdokument entsprechend den Änderungen. Dieser iterative Prozess trägt dazu bei, dass die Anforderungen die Bedürfnisse der Beteiligten genau widerspiegeln.
8. Codelose App erstellen
Halten Sie die Annahmen fest, die sich auf das technische und marktbezogene Umfeld des Projekts, die verfügbaren Ressourcen und das erwartete Nutzerverhalten beziehen. Nennen Sie außerdem ausdrücklich die Projektvorgaben wie das Projektbudget, zeitliche Einschränkungen oder technologische Grenzen.
Verwenden Sie bei Bedarf ein Dokumentenmanagement-Tool wie DMS von Modern Requirements. Damit können Sie Dokumente hoch- und herunterladen, ein- und auschecken sowie die Ordner verwalten, in denen Sie diese ablegen.
Geben Sie alle Abhängigkeiten von externen Faktoren oder Systemen, die sich auf das Projekt auswirken könnten, klar an.
Teilen Sie all diese Abhängigkeiten, Einschränkungen und Annahmen den wichtigsten Beteiligten mit.
9. Fügen Sie relevante Diagramme oder Entwürfe bei
Verwenden Sie Diagramme wie Anwendungsfalldiagramme, Aktivitätsdiagramme oder Sequenzdiagramme, um komplexe Prozesse, Arbeitsabläufe oder Systeminteraktionen zu veranschaulichen. Fügen Sie außerdem Wireframes oder Mockups hinzu, um die Benutzeroberfläche anschaulich darzustellen.
Verwendung eines Diagrammtools wie dem von Modern Requirements bereitgestellten, um aus Diagrammen Anforderungen zu erstellen und umgekehrt.
Sie können aus Workitems auch Diagramme erstellen, indem Sie die KI-gestützten Diagrammfunktionen von Tools wie Copilot4DevOps nutzen. Dazu gehören Diagramme wie Gantt-Diagramme, Flussdiagramme, Kreisdiagramme usw.
10. Ein Verfahren zur Verwaltung von Anforderungsänderungen einrichten
Nach der Veröffentlichung eines Projekts zielt der DevOps-Prozess darauf ab, Feedback für die nächsten Aktualisierungen der Software zu sammeln. Das bedeutet, einen formellen Prozess zu schaffen, um die unvermeidlichen Änderungen, Fehler oder Marktveränderungen bei den Softwareanforderungen zu bewältigen. Seien Sie zudem offen für informelle Feedbackkanäle wie persönliche Gespräche oder Kommentare von Nutzern.
3. Was sind häufige Fehler beim Verfassen von Softwareanforderungen?
Wenn Sie sich der häufigen Fallstricke beim Verfassen von Softwareanforderungen bewusst sind, können Sie die Qualität Ihres Produkts verbessern. Verschiedene häufige Fehler können zu Projektverzögerungen, Missverständnissen und sogar zu Produktfehlern führen. Hier sind einige der häufigsten Fallstricke:
- Fehlende klare Ziele: Dies kann zu einer schleichenden Ausweitung des Projektumfangs, Verzögerungen und Budgetüberschreitungen führen. Definieren Sie die Projektziele anhand der SMART-Kriterien (spezifisch, messbar, erreichbar, relevant, terminiert) klar und überprüfen Sie diese regelmäßig während des gesamten Projektzyklus.
- Mehrdeutige Formulierungen: Die Verwendung vager Formulierungen kann für andere Beteiligte im weiteren Verlauf zu erheblichen Problemen führen. Es ist bereits bekannt, dass schlecht formulierte Anforderungen eine Hauptursache für 50 % der Produktfehler und 80 % des Nacharbeitsaufwands in Projekten sind.
- Nicht-funktionale Anforderungen nicht außer Acht lassen: Berücksichtigen Sie sowohl funktionale als auch nicht-funktionale Anforderungen (z. B. Sicherheit, Skalierbarkeit, Leistung) mit konkreten Kennzahlen. Lassen Sie den Text von mehreren Beteiligten auf Verständlichkeit prüfen. Natürlich ist das Verfassen von nicht-funktionalen Anforderungen eine eigene Kompetenz.
- „Wie“ statt „Was“ schreiben und die Perspektive der Nutzer außer Acht lassen: Konzentrieren Sie sich darauf, die gewünschten Ergebnisse zu beschreiben, anstatt sich auf Umsetzungsdetails zu konzentrieren. Erstellen Sie Personas und fügen Sie User Stories hinzu, um die Anforderungen aus der Perspektive der Nutzer zu veranschaulichen.
- Mangelnde Testbarkeit: Nicht testbare Anforderungen führen zu Fehlern, Verzögerungen und enttäuschten Erwartungen der Stakeholder. Eine mangelnde Testbarkeit bedeutet, dass Ihre Tester Unstimmigkeiten zwischen den Anforderungen der Stakeholder und den Projektergebnissen nicht erkennen können.
Stellen Sie daher sicher, dass jede Anforderung messbar und überprüfbar ist, einschließlich der Abnahmekriterien.
4. Gute Softwareanforderungen machen den Unterschied
Softwareanforderungen bilden das Rückgrat der Entwicklung und legen die für eine erfolgreiche Umsetzung entscheidenden Funktionen und Leistungsstandards fest. Gut formulierte Anforderungen verhindern Missverständnisse, sichern den Projektumfang und gewährleisten, dass die Software den geschäftlichen und anwenderspezifischen Anforderungen effizient gerecht wird.