Software-Anforderungen schreiben, die Entwickler tatsächlich umsetzen können
Klare Software-Anforderungen mit User Stories, Akzeptanzkriterien und Edge Cases schreiben.
Zusammenfassung
Schlechte Anforderungen sind der Hauptgrund, warum Softwareprojekte scheitern. Dieser Leitfaden gibt Ihnen ein wiederholbares Framework: Führen Sie strukturierte Discovery-Calls durch, schreiben Sie User Stories mit messbaren Akzeptanzkriterien, identifizieren Sie systematisch Grenzfälle und erstellen Sie ein Anforderungsdokument, das ein Entwickler schätzen und umsetzen kann — ohne ein einziges "das System soll benutzerfreundlich sein".
Voraussetzungen
- Zugang zu Stakeholdern oder Endnutzern, die das Geschäftsproblem artikulieren können
- Ein Texteditor oder Kollaborationstool (Google Docs, Notion, Confluence)
- Grundlegendes Verständnis der Domäne, für die Sie spezifizieren
- Die Bereitschaft, "Das weiß ich noch nicht" zu sagen und zu iterieren
Schritt 1: Das Discovery-Call-Framework
Bevor Sie eine einzige Anforderung schreiben, müssen Sie das Problem verstehen. Die meisten Anforderungsfehler lassen sich darauf zurückführen, dass dieser Schritt übersprungen oder überhastet wurde. Hier ist ein strukturiertes Framework für Discovery-Calls, das tatsächlich verwertbare Ergebnisse liefert.
Vorbereitung vor dem Call (15 Minuten)
Senden Sie dem Stakeholder mindestens 24 Stunden vor dem Call einen kurzen Fragebogen:
1. Welches Problem lösen wir? (1-2 Sätze)
2. Wer hat dieses Problem? (konkrete Rollen/Personas)
3. Was passiert heute ohne diese Lösung? (aktueller Workaround)
4. Wie sieht "fertig" aus? (Erfolgskennzahl)
5. Gibt es harte Deadlines oder Einschränkungen?
Die Call-Struktur (60 Minuten)
Verwenden Sie diese Agenda — weichen Sie bei Bedarf ab, aber decken Sie immer diese Blöcke ab:
00:00 - 05:00 Kontext-Abgleich (wiederholen, was Sie wissen)
05:00 - 20:00 Problem-Vertiefung ("Zeigen Sie mir, wie Sie das heute machen")
20:00 - 35:00 Lösungsexploration ("Was wäre, wenn wir...")
35:00 - 50:00 Einschränkungen erfassen (Budget, Timeline, Integrationen)
50:00 - 55:00 Priorisierung (Must-have vs Nice-to-have)
55:00 - 60:00 Nächste Schritte und Zeitplan
Schlüsselfragen
Diese Fragen decken konsistent versteckte Anforderungen auf:
- "Erzählen Sie mir vom letzten Mal, als das passiert ist." — Erzwingt konkrete Beispiele statt abstrakter Wünsche.
- "Was würden Sie tun, wenn [Feature X] nicht verfügbar wäre?" — Zeigt, welche Features wirklich essenziell sind.
- "Wer arbeitet noch mit diesen Daten/diesem Prozess?" — Legt Integrationsanforderungen und unbekannte Stakeholder offen.
- "Was ist das Schlimmste, das passieren könnte?" — Identifiziert Fehlerbehandlung und Sicherheitsanforderungen.
- "Woran werden Sie erkennen, dass es funktioniert?" — Definiert messbare Erfolgskriterien.
Nachbereitung
Senden Sie innerhalb von 24 Stunden eine strukturierte Zusammenfassung zur Bestätigung an den Stakeholder. Das ist Ihr erster Entwurf der Anforderungen — nicht das finale Dokument, aber das Fundament.
Schritt 2: User Stories, die funktionieren
Eine User Story ist für sich genommen keine Anforderung. Sie ist ein Platzhalter für ein Gespräch. Aber eine gut geschriebene User Story macht dieses Gespräch produktiv.
Das Format
Als [konkrete Rolle],
möchte ich [konkrete Aktion],
damit [messbares Geschäftsergebnis].
Gute vs. schlechte Beispiele
SCHLECHT: Als Benutzer möchte ich ein Dashboard, damit ich Daten sehen kann.
GUT: Als Lagerleiter möchte ich die heutigen ausstehenden
Sendungen nach Deadline sortiert sehen, damit ich
priorisieren kann, welche Aufträge zuerst kommissioniert werden.
SCHLECHT: Als Admin möchte ich Benutzer verwalten.
GUT: Als Kontoadministrator möchte ich ein Benutzerkonto
deaktivieren und dessen offene Aufgaben einem anderen
Teammitglied zuweisen, damit keine Arbeit verloren geht,
wenn jemand das Team verlässt.
Die INVEST-Checkliste
Jede User Story sollte sein:
- Independent — Kann ohne Abhängigkeit von anderen Stories entwickelt werden
- Negotiable — Details sind verhandelbar; es ist noch kein Vertrag
- Valuable — Liefert klaren Wert für Nutzer oder Geschäft
- Estimable — Ein Entwickler kann sie grob schätzen
- Small — Kann in einem Sprint (max. 1-2 Wochen) fertiggestellt werden
- Testable — Man kann einen Test schreiben, der beweist, dass es funktioniert
Wenn eine Story einen dieser Punkte nicht erfüllt, teilen Sie sie auf oder schreiben Sie sie um. Eine Story, die "Estimable" nicht erfüllt, bedeutet meist, dass das Problem nicht gut genug verstanden ist — gehen Sie zurück zum Discovery.
Schritt 3: Akzeptanzkriterien als Vertrag
Akzeptanzkriterien verwandeln vage Stories in baubare Spezifikationen. Sie sind der Vertrag zwischen Product Owner und Entwicklungsteam. Wenn die Akzeptanzkriterien bestanden werden, ist die Story fertig. Punkt.
Given-When-Then-Format
Story: Als Lagerleiter möchte ich die heutigen ausstehenden
Sendungen nach Deadline sortiert sehen.
Akzeptanzkriterien:
Gegeben ich bin als Lagerleiter eingeloggt
Und es gibt 3 ausstehende Sendungen für heute
Wenn ich das Dashboard öffne
Dann sehe ich genau diese 3 Sendungen
Und sie sind nach Deadline aufsteigend sortiert
Und jeder Eintrag zeigt: Auftrags-ID, Kundenname,
Deadline-Uhrzeit, Artikelanzahl
Gegeben ich bin als Lagerleiter eingeloggt
Und es gibt keine ausstehenden Sendungen für heute
Wenn ich das Dashboard öffne
Dann sehe ich eine Leerzustandsmeldung:
"Keine Sendungen für heute fällig"
Gegeben ich bin als Lagerleiter eingeloggt
Und eine Sendungs-Deadline ist abgelaufen
Wenn ich das Dashboard öffne
Dann ist diese Sendung rot hervorgehoben
Und sie erscheint unabhängig von der Sortierung ganz oben
Regeln für gute Akzeptanzkriterien
- Seien Sie spezifisch bei Daten. "Zeigt relevante Informationen" ist nutzlos. Listen Sie exakt auf, welche Felder.
- Decken Sie den Leerzustand ab. Was passiert, wenn keine Daten vorhanden sind? Das wird in 80% der Spezifikationen vergessen.
- Decken Sie den Fehlerzustand ab. Was passiert, wenn der API-Aufruf fehlschlägt? Wenn der Benutzer keine Berechtigung hat?
- Inkludieren Sie Grenzen. Was bei 10.000 Sendungen? Gibt es Paginierung? Eine maximale Anzeigezahl?
- Machen Sie Aussagen testbar. "Die Seite lädt schnell" ist nicht testbar. "Die Seite lädt in unter 2 Sekunden bei 100 Datensätzen" schon.
Schritt 4: Systematische Edge-Case-Identifikation
Grenzfälle sind dort, wo Bugs leben. Ein systematischer Ansatz, sie zu finden, spart Wochen an Hin und Her während der Entwicklung.
Die Edge-Case-Matrix
Gehen Sie für jedes Feature diese Kategorien durch:
Kategorie | Fragen
-------------------+-------------------------------------------
Leerzustand | Was, wenn keine Daten? Null Einträge?
Grenzwerte | Maximale Länge? Negative Zahlen? Null?
Berechtigungen | Was, wenn Zugriff fehlt? Rollenwechsel?
Nebenläufigkeit | Was, wenn zwei Nutzer gleichzeitig bearbeiten?
Zeitzonen | Überschreitet das Zeitzonengrenzen?
Konnektivität | Was bei Netzwerkabbruch während einer Aktion?
Datenformate | Unicode? Sonderzeichen? RTL-Text?
Skalierung | Was bei 1 Mio Datensätzen? Bei einem?
Zustandsübergänge | Was, wenn sich der Status während der Ansicht ändert?
Externe Abhängig. | Was, wenn eine Drittanbieter-API ausfällt?
Praktische Übung
Nehmen Sie Ihre komplexeste User Story. Stellen Sie einen Timer auf 15 Minuten. Gehen Sie die obige Matrix durch. Sie werden mindestens 5 Grenzfälle finden, an die Sie nicht gedacht hatten. Schreiben Sie jeden als zusätzliches Akzeptanzkriterium oder als separate Story, wenn er groß genug ist.
Schritt 5: Das Anforderungsdokument-Format
Hier ist ein bewährtes Template, das Vollständigkeit und Lesbarkeit in Balance bringt. Entwickler, Designer und Product Owner können alle damit arbeiten.
# Feature: [Name]
## Kontext
- Problembeschreibung (2-3 Sätze)
- Aktueller Workaround
- Erfolgskennzahl
## User Stories
- US-001: Als [Rolle] möchte ich [Aktion], damit [Ergebnis]
- US-002: ...
## Akzeptanzkriterien
### US-001
- AK-001.1: Gegeben... Wenn... Dann...
- AK-001.2: Gegeben... Wenn... Dann...
## Datenanforderungen
- Eingabefelder: [Liste mit Typen, Einschränkungen, Validierungsregeln]
- Ausgabefelder: [Liste mit Formaten]
- Speicherung: [Wo leben diese Daten?]
## Nicht-funktionale Anforderungen
- Performance: [konkrete Ziele, z.B. "< 2s Antwortzeit"]
- Sicherheit: [Authentifizierungsmethode, Datensensibilitätsstufe]
- Barrierefreiheit: [WCAG-Level, spezifische Anforderungen]
## Abhängigkeiten
- Externe Systeme: [Liste mit API-Doku-Links]
- Interne Services: [Liste]
- Datenmigrationen: [falls vorhanden]
## Außerhalb des Umfangs
- [Explizit auflisten, was dieses Feature NICHT beinhaltet]
## Offene Fragen
- [Ungeklärte Punkte mit Verantwortlichem und Fälligkeitsdatum]
Der Abschnitt "Außerhalb des Umfangs" ist wohl der wichtigste. Er verhindert Scope Creep, indem Grenzen explizit gemacht werden. Was nicht im Umfang ist, ist nicht in der Schätzung und nicht im Sprint.
Schritt 6: Anti-Patterns vermeiden
Dies sind die häufigsten Anforderungsfehler, gesammelt aus Hunderten gescheiterter Projekte:
1. Die "Lösungsspezifikation" als Anforderung getarnt
SCHLECHT: "Verwende eine PostgreSQL-Datenbank mit einer users-Tabelle
mit Spalten id, name, email."
GUT: "Das System muss Benutzerprofile mit Name und E-Mail
speichern. Daten müssen sitzungsübergreifend bestehen
bleiben und per E-Mail abfragbar sein."
Anforderungen beschreiben was und warum. Architektur beschreibt wie. Vermischen Sie das nicht, es sei denn, die Technologie ist eine harte Einschränkung.
2. Die "vage Adjektive"-Falle
Markieren Sie diese Wörter in jedem Anforderungsdokument — sie sind fast immer bedeutungslos:
- "Benutzerfreundlich" — Verglichen womit? Wie gemessen?
- "Schnell" — 100ms? 5 Sekunden? Unter welcher Last?
- "Skalierbar" — Für 100 Nutzer? 10 Millionen?
- "Sicher" — Gegen welches Bedrohungsmodell?
- "Modern" — Das altert schlecht. Seien Sie konkret bei Technologien oder Mustern.
3. Das "fehlende Negativ"-Problem
Anforderungen, die nur den Happy Path beschreiben. Fragen Sie: "Was soll das System tun, wenn [alles schiefgeht]?"
4. Die "Gemischtwarenladen"-Anforderung
SCHLECHT: "Das System soll die gesamte Benutzerverwaltung abdecken
einschließlich Registrierung, Login, Passwort-Reset,
Profilbearbeitung, Rollenzuweisung, Kontolöschung,
Audit-Logging und SSO-Integration."
Das sind 8 separate Features in einen Satz gestopft. Jedes braucht eine eigene Story, Kriterien und Schätzung.
5. Der "Kopie vom Wettbewerber"-Ansatz
"Es soll wie Slack funktionieren" ist keine Anforderung. Slack hat Tausende Features, gebaut von Hunderten Entwicklern über 10 Jahre. Seien Sie konkret, welches Verhalten Sie wollen und warum.
Problembehandlung & Hinweise
Stakeholder, die nicht artikulieren können, was sie wollen
Zeigen Sie Beispiele. Erstellen Sie Lo-Fi-Mockups (Stift und Papier reicht). Bitten Sie sie, auf etwas Konkretes zu reagieren, anstatt von Grund auf zu erschaffen. "Ist es eher wie A oder wie B?" ist leichter zu beantworten als "Was möchten Sie?"
Anforderungen, die sich ständig ändern
Ein gewisses Maß an Änderung ist normal und gesund. Aber wenn sich Kernanforderungen nach Entwicklungsstart ändern, haben Sie ein Discovery-Problem, kein Entwicklungsproblem. Gehen Sie zurück zum Discovery-Call-Framework und machen Sie es richtig.
Entwickler sagen "Das kann ich nicht schätzen"
Das bedeutet, die Anforderung ist nicht spezifisch genug. Fragen Sie den Entwickler: "Welche Information brauchst du, um zu schätzen?" Dokumentieren Sie die Fragen, holen Sie Antworten von Stakeholdern und aktualisieren Sie die Anforderung.
Zu viele Anforderungen, zu wenig Zeit
Verwenden Sie die MoSCoW-Methode: Must have, Should have, Could have, Won't have. Seien Sie ehrlich bei "Won't have" — das heißt nicht "nie", sondern "nicht in diesem Release". Das erzwingt Priorisierung und verhindert den Gemischtwarenladen.
Prävention & Best Practices
Continuous Discovery
Behandeln Sie Anforderungen nicht als einmalige Phase. Führen Sie kurze Discovery-Sessions (30 Minuten) jeden Sprint durch, um anstehende Arbeit zu verfeinern. Das fängt Missverständnisse früh ab, wenn sie billig zu beheben sind.
Die Drei Amigos
Bevor die Entwicklung einer Story beginnt, führen Sie ein 15-minütiges Gespräch mit genau drei Personen: einer Produktperson, einem Entwickler und einem Tester. Jeder bringt eine andere Perspektive ein, die verschiedene Lücken aufdeckt.
Anforderungs-Reviews
Behandeln Sie Anforderungen wie Code — sie brauchen Reviews. Lassen Sie einen Entwickler die Akzeptanzkriterien durchlesen und fragen: "Kann ich genau das ohne Mehrdeutigkeit bauen?" Wenn nicht, verfeinern.
Lebende Dokumentation
Anforderungen, die in E-Mail-Threads oder Slack-Nachrichten leben, sind Anforderungen, die verloren gehen. Nutzen Sie eine einzige Wahrheitsquelle (Wiki, Notion, Confluence) und verlinken Sie von Ihrem Projektmanagement-Tool. Jede Story-Karte sollte auf ihre detaillierte Spezifikation verlinken.
Versionskontrolle für Anforderungen
Verfolgen Sie Änderungen an Anforderungen. Wenn ein Stakeholder fragt "Warum haben wir das so gebaut?", müssen Sie auf die Anforderung und den Genehmiger verweisen können. Das ist keine Bürokratie — es ist Schutz für alle Beteiligten.
Template-Konsistenz
Verwenden Sie dasselbe Anforderungsdokument-Format für jedes Feature. Konsistenz reduziert die kognitive Last für alle Leser und macht es schwerer, versehentlich einen Abschnitt zu überspringen.
Experten-Hilfe gebraucht?
Soll ich bei Ihrem Kundengespräch dabei sein und die Spezifikation liefern? €150.
Jetzt buchen — €150100% Geld-zurück-Garantie