Zum Inhalt springen

Nicht-funktionale Anforderungen erklärt: Beispiele, Arten, Tools

Was sind nicht-funktionale Anforderungen?

Die Entwicklung eines guten Produkts besteht nicht nur darin, alle erforderlichen Funktionen hinzuzufügen. Es geht auch darum, wie gut diese Funktionen funktionieren, wenn das Produkt auf den Markt kommt.

Stellen Sie sich ein Team vor, das eine Webanwendung entwickelt. Es hat das Anmeldesystem erfolgreich implementiert, aber das Laden dauert 15 bis 20 Sekunden und es kommt zu Abstürzen, wenn 30 bis 50 Benutzer gleichzeitig versuchen, sich anzumelden. Diese Probleme hängen nicht mit fehlenden Funktionen des Systems zusammen, sondern mit der Leistung des Systems.

Hier kommen nicht-funktionale Anforderungen ins Spiel. Sie werden in der Planungsphase der Produktentwicklung definiert und gewährleisten die Zufriedenheit der Nutzer und den geschäftlichen Erfolg.

Laut einer Studie des Carnegie Mellon Institute entfallen 60 bis 80 % der Kosten für die Produktentwicklung auf Nachbesserungen, d. h. die Behebung von Fehlern, die aufgrund fehlender Anforderungen, insbesondere nicht funktionaler Anforderungen, auftreten.

Dieser Blog behandelt die Definition von nicht-funktionalen Anforderungen, den Unterschied zwischen funktionalen und nicht-funktionalen Anforderungen, die gängigen Arten von NFRs mit Beispielen und Tipps zum Verfassen effektiver nicht-funktionaler Anforderungen.

Was sind nicht-funktionale Anforderungen (NFRs)?

Nicht-funktionale Anforderungen (NFRs) sind Spezifikationen, die die Betriebsfähigkeiten eines Systems beschreiben. Einfach ausgedrückt definieren NFRs nicht die Funktionen des Systems, sondern wie sich das System verhalten und wie gut es in verschiedenen Szenarien funktionieren sollte.

NFRs konzentrieren sich auf die Geschwindigkeit, Sicherheit, Benutzerfreundlichkeit und Zuverlässigkeit des Systems sowie darauf, wie es im Laufe der Zeit mit wachsender Nutzerzahl skaliert werden sollte. So helfen sie Entwicklern dabei, klare Erwartungen an das Verhalten des Systems zu formulieren.

Ein E-Commerce-Shop könnte beispielsweise folgende NFRs haben:

  • Die Produktseite sollte innerhalb von 1 Sekunde geladen werden, um die Benutzererfahrung zu verbessern.
  • Das System sollte zu 99,9 % der Zeit verfügbar sein, auch während der Spitzenzeiten.
  • Die sensiblen Benutzerdaten müssen aus Sicherheitsgründen verschlüsselt werden.

Mit klaren NFRs können Entwickler ein zuverlässiges System aufbauen, das die Erwartungen der Nutzer und Stakeholder erfüllt. Wenn NFRs ignoriert werden, haben Teams oft Schwierigkeiten, die Ziele zu erreichen.

Funktionale vs. nicht-funktionale Anforderungen: Was ist der Unterschied?

Das Produktentwicklungsteam befasst sich hauptsächlich mit zwei Arten von Anforderungen: funktionalen und nicht-funktionalen.

Wie der Name schon sagt, definieren funktionale Anforderungen Funktionen, über die das System verfügen muss, um die Bedürfnisse der Benutzer zu erfüllen. Ein Beispiel für eine funktionale Anforderung an das Autovermietungssystem ist: „Benutzer sollten mehrere Autos miteinander vergleichen können.“

Im Gegensatz dazu beschreiben nicht-funktionale Anforderungen, wie das System funktionieren soll. Anstatt neue Funktionen hinzuzufügen, stellen sie sicher, dass das System für Benutzer in jeder Situation zugänglich und skalierbar ist, die Daten der Benutzer schützt und so weiter. Eine NFR in einem Autovermietungssystem lautet beispielsweise: „1.000 Benutzer sollten gleichzeitig ein Auto buchen können.“

Lassen Sie uns die Unterschiede in der folgenden Tabelle näher betrachten.

Aspekt
Funktionale Anforderung
Nicht-funktionale Anforderung
Zweck
Was das System leisten sollte
Wie das System funktionieren sollte
Fokus
Funktionen und Benutzeraktionen
Leistung, Sicherheit, Zuverlässigkeit, Benutzerfreundlichkeit usw.
Definiert durch
Hauptsächlich definiert durch Entwickler, Endnutzer und andere Interessengruppen.
Hauptsächlich von Systementwicklern definiert.
Prüfung
Funktionstestfälle werden verwendet, um die wichtigsten Funktionen des Produkts zu testen.
NFRs werden mit verschiedenen Methoden getestet, beispielsweise mit Leistungs- und Belastungstests.
Sichtbarkeit
Normalerweise für den Endbenutzer sichtbar
Meistens hinter den Kulissen, aber es wirkt sich auf die Benutzererfahrung aus.
Auswirkungen bei Nichtbeachtung
Bestimmte Funktionen funktionieren möglicherweise nicht, aber andere Funktionen des Systems funktionieren wie gewohnt.
Das gesamte System kann langsam werden oder abstürzen.

Verschiedene Arten von nicht-funktionalen Anforderungen, die Sie kennen sollten

Nicht-funktionale Anforderungen werden nach bestimmten Bereichen wie Leistung, Sicherheit, Benutzerfreundlichkeit usw. gruppiert. Die Teams für das Anforderungsmanagement müssen jede Art von Anforderungen genau verstehen, damit das Projekt erfolgreich sein kann.

Hier haben wir 9 Arten von NFRs mit Beispielen behandelt.

Diagramm, das grundlegende nicht-funktionale Anforderungen wie Benutzerfreundlichkeit, Leistung und Sicherheit zeigt.
Wichtige Kategorien grundlegender nicht-funktionaler Anforderungen in der Softwareentwicklung.

1. Leistungsanforderungen

Leistungsanforderungen konzentrieren sich auf die Geschwindigkeit und Effizienz eines Systems. Sie definieren, wie schnell das System die Anfragen der Benutzer verarbeiten und darauf reagieren sollte. Benutzer sind oft frustriert, wenn sie mit leistungsschwachen Systemen arbeiten, was zu hohen Absprungraten führt.

Beispiele (generatives KI-System)
  • Das System muss innerhalb von 1,2 Sekunden auf die Anfragen des Benutzers reagieren.
  • Bei der Eingabe der Abfrage in das Eingabefeld sollte die Latenz nicht mehr als 500 ms betragen.

2. Anforderungen an die Skalierbarkeit

Skalierbarkeit bezieht sich auf die Fähigkeit eines Systems, zu wachsen und dabei weiterhin eine gute Leistung zu erbringen. Wenn die Anzahl der Systembenutzer oder Datenverarbeitungsanfragen zunimmt, funktioniert ein skalierbares System, ohne dass eine vollständige Neukonfiguration des Systems erforderlich ist.

Skalierbarkeitsanforderungen sind wichtig für Unternehmen, die zukünftiges Wachstum oder saisonale Traffic-Spitzen erwarten. Werden Skalierbarkeitsanforderungen ignoriert, kann das System zusammenbrechen, wenn es die Last während Traffic-Spitzen nicht bewältigen kann.

Beispiele
  • Das Messaging-System sollte auch dann noch reibungslos funktionieren, wenn die Nutzerzahl von 100.000 auf 5 Millionen aktive Nutzer ansteigt.
  • Während des Verkaufs sollte der E-Commerce-Shop in der Lage sein, das Zehnfache des Datenverkehrs ohne Leistungseinbußen zu bewältigen.

3. Verfügbarkeitsanforderungen

Verfügbarkeitsanforderungen beschreiben, wie lange das System für Benutzer zugänglich sein sollte. Die hohe Verfügbarkeit des Systems reduziert Ausfallrisiken erheblich und verbessert das Vertrauen der Benutzer. Bei einigen Systemen können bereits wenige Minuten Ausfallzeit zu Verlusten in Millionenhöhe, zum Verlust von Benutzern und zum Verlust des guten Rufs führen.

Beispiel
  • Das Online-Banking-System sollte zu 99,95 % der Zeit verfügbar sein. Aufgrund von Wartungsarbeiten kann es zwischen 2:00 und 4:00 Uhr Ortszeit zu einer Ausfallzeit von 30 Minuten kommen.

4. Anforderungen an die Portabilität

Portabilität NFRs beziehen sich darauf, wie einfach das System mit verschiedenen Umgebungen, einschließlich Betriebssystemen, Cloud-Anbietern oder Geräten, zusammenarbeiten kann. Ein portables System spart Zeit und Aufwand beim Übergang von der Entwicklung zur Produktion oder bei der Erweiterung auf neue Plattformen.

Beispiele (Social-Media-Plattform)
  • Eine Anwendung sollte auf allen mobilen Geräten laufen.
  • Android- und iOS-Nutzer sollten die gleichen Kernfunktionen erhalten.
  • Das System sollte containerfähig sein (z. B. Docker), um eine schnelle Bereitstellung in verschiedenen Cloud-Umgebungen wie AWS, Azure oder GCP zu unterstützen.

5. Kompatibilitätsanforderungen

Kompatibilität NFRs definieren, wie gut das System mit anderen Systemen, Software oder Hardware zusammenarbeitet. Dies ist in Umgebungen wichtig, in denen das System eine Verbindung zu APIs, Datenbanken, Browsern oder Diensten von Drittanbietern herstellen muss. Eine schlechte Kompatibilität kann zu Funktionsstörungen, Beschwerden von Benutzern und Integrationsproblemen führen.

Beispiele
  • Die Bildschirmfreigabe-Option in einer Videokonferenzanwendung sollte in mobilen und Desktop-Browsern funktionieren.
  • Ein Projektmanagement-Tool sollte sich nahtlos in verschiedene Plattformen wie Google Kalender, Slack usw. integrieren lassen, ohne dass die Benutzer es manuell konfigurieren müssen.

6. Zuverlässigkeitsanforderungen

Zuverlässigkeitsanforderungen bewerten, wie oft das System auch bei unerwarteten Ereignissen ohne Ausfälle funktioniert. Dies ist wichtig für Anwendungen wie Bankensoftware, Gesundheitssysteme usw., die täglich von Menschen genutzt werden.

Beispiele (Krankenhaus-Patientenverwaltungssystem)
  • Das System sollte während eines Zeitraums von 30 Tagen zu 99,95 % der Zeit störungsfrei funktionieren.
  • Wenn die Datenbankverbindung fehlschlägt, sollte das System drei Wiederholungsversuche zur automatischen Wiederherstellung durchführen.
  • Wenn das System abstürzt, sollte es die letzte Bereitstellung zur Wiederherstellung zurücksetzen.

7. Anforderungen an die Wartbarkeit

Wartbarkeit NFRs definieren, wie einfach und schnell das System aktualisiert oder repariert werden kann. Sie umfassen den Zeit- und Ressourcenaufwand, der für die Wartung des Systems erforderlich ist. Wartbarkeit ist bei Großprojekten oder Produkten, die ständig verbessert werden, immer wichtig.

Beispiele (CRM-System für Vertriebsteams)
  • Alle Fehler sollten innerhalb von 30 Minuten behoben werden.
  • Entwickler müssen in der Lage sein, die neue Version oder Updates bereitzustellen, ohne die aktiven Benutzersitzungen zu beeinträchtigen.

8. Sicherheitsanforderungen

Sicherheits-NFRs legen fest, wie das System sensible Benutzerdaten vor unbefugtem Zugriff, Sicherheitsverletzungen und Cyberangriffen schützen und sichern soll. Dazu gehört vor allem die Implementierung von Authentifizierungs- und Verschlüsselungsmechanismen zum Schutz der Daten.

Beispiele (Aktienhandelsanwendung)
  • Die Daten des Benutzers müssen verschlüsselt werden, wenn eine API-Anfrage zwischen dem Frontend und dem Backend des Systems gestellt wird, um die Daten zu aktualisieren.
  • Benutzer müssen sich für alle finanziellen Transaktionen mit einer Zwei-Faktor-Authentifizierung (2FA) anmelden.
  • Das System sollte ein Konto nach fünf fehlgeschlagenen Anmeldeversuchen sperren und den Benutzer per E-Mail benachrichtigen.

9. Anforderungen an die Benutzerfreundlichkeit

Die Benutzerfreundlichkeit konzentriert sich darauf, wie einfach es für Benutzer ist, mit dem System zu interagieren. Ein Produkt mit hoher Benutzerfreundlichkeit verbessert die Benutzererfahrung und kann von neuen Benutzern mit minimalem Schulungsaufwand angenommen werden. Eine schlechte Benutzerfreundlichkeit führt zu Frustration und erhöht die Supportkosten.

Beispiel
  • In der Online-App für die Lieferung von Lebensmitteln sollten alle wichtigen Aktionen (zum Warenkorb hinzufügen, Gutschein einlösen, nachbestellen) mit maximal zwei Fingertipps auf dem Mobilgerät zugänglich sein.

Warum nicht-funktionale Anforderungen wichtig sind: Fehler und Lehren aus der Praxis

Produktentwicklungsteams konzentrieren sich hauptsächlich auf funktionale Anforderungen, schenken jedoch nicht-funktionalen Anforderungen keine Beachtung. Die Teams sind der Meinung, dass eine Funktion als fertiggestellt gilt, sobald sie funktioniert. Sie berücksichtigen jedoch nicht die Leistung, Zuverlässigkeit, Sicherheit und andere NFRs.

Hier erfahren Sie, wie das Überspringen nicht-funktionaler Anforderungen zu schwerwiegenden Ausfällen in realen Systemen geführt hat.

Amazon: Ausfall während des Prime Day (2018)

Im Jahr 2018 kam es bei Amazon während des Prime Day zu einem größeren Ausfall. Die Zahl der Website-Nutzer stieg unerwartet stark an, sodass das System überlastet war. Infolgedessen stürzte die Amazon-Website ab und Käufer erhielten Fehlermeldungen. Amazon verlor während dieses einstündigen Ausfalls fast 90 bis 100 Millionen US-Dollar.

Dieser Ausfall ist auf ein unzureichendes Skalierbarkeitsmanagement zurückzuführen. Das System sollte daher jederzeit skalierbar sein und die meiste Zeit verfügbar sein.

Knight Capital: Ausfall des Handelssystems (2012)

Im Jahr 2012 führte Knight Capital die Handelssoftware ohne ordnungsgemäße Tests ein. Innerhalb von 45 Minuten nach der Einführung begann das System, fehlerhafte Handelsgeschäfte zu tätigen, die dem Unternehmen einen Verlust von 440 Millionen Dollar verursachten.

Dieser Systemausfall trat auf, weil die Zuverlässigkeit der Software nicht ordnungsgemäß getestet worden war und es keine Sicherheitskontrollen gab, um die fehlerhaften Aktionen zu stoppen.

TSB Bank: IT-Migrationskatastrophe (2018)

Die TSB Bank in Großbritannien geriet 2018 in ernsthafte Schwierigkeiten, nachdem sie Kundendaten auf ein neues System übertragen hatte. Die Datenmigration von der alten auf die neue Plattform verlief erfolgreich. Danach konnten sich jedoch viele Kunden nicht mehr einloggen, einige sahen falsche Angaben in ihrem Profil und einige wenige Nutzer konnten die privaten Daten anderer Personen einsehen. Letztendlich zahlte die Bank rund 330 Millionen Pfund, um alles zu reparieren, und verlor das Vertrauen ihrer Kunden.

Die Gründe für dieses Scheitern waren eine mangelhafte Systemzuverlässigkeit und unzureichende Sicherheitsmaßnahmen.

Tipps und bewährte Verfahren zum Verfassen klarer nicht-funktionaler Anforderungen

Wie bereits erwähnt, sind nicht-funktionale Anforderungen entscheidend für den Erfolg eines Projekts. Allerdings ist es schwierig, sie korrekt zu formulieren. Viele Teams begehen häufige Fehler, die später zu Verzögerungen oder einem schlechten Systemverhalten führen können. Teams sollten die folgenden Best Practices befolgen, um häufige Fehler zu vermeiden und gute Softwareanforderungen zu formulieren.

  1. Seien Sie konkret und vermeiden Sie vage Formulierungen: Seien Sie bei der Definition der nicht-funktionalen Anforderungen klar und vermeiden Sie Unklarheiten. Anstatt beispielsweise zu sagen: „Das System sollte schnell sein“, sagen Sie lieber: „Das System sollte das Dashboard für 90 % der Benutzer in weniger als 2 Sekunden laden.“ Auf diese Weise kann jedes Teammitglied das klare Ziel der NFR verstehen.
  2. Machen Sie alle NFRs messbar und überprüfbar: Legen Sie immer Metriken oder Bereiche fest, um die Erfolgskriterien zu messen. Anstatt beispielsweise anzugeben, dass eine Anwendung „hohe Skalierbarkeit“ aufweisen sollte, sagen Sie: „Die Anwendung sollte 500 gleichzeitige Benutzer unterstützen, ohne die Leistung zu beeinträchtigen.“ Dies hilft den Teams, den Fortschritt zu verfolgen und sicherzustellen, dass die Anwendung die NFR erfolgreich erfüllt.
  3. Definieren Sie NFRs für Systemkomponenten: Anstatt eine bestimmte NFR für das gesamte System zu definieren, definieren Sie diese für die jeweilige Komponente. Bei der Entwicklung eines E-Commerce-Shops müssen Sie beispielsweise keine Skalierbarkeitsanforderungen für das Admin-Panel definieren, wenn nur eine feste Anzahl von Administratoren damit interagieren wird.
  4. Arbeiten Sie mit allen wichtigen Stakeholdern zusammen: Beziehen Sie bei der Definition nicht-funktionaler Anforderungen alle wichtigen Stakeholder mit ein, darunter Entwickler, QA-Tester, Sicherheitsteams, Architekten, Product Owner und bei Bedarf sogar Endnutzer. Jeder kann mit seinen unterschiedlichen Aspekten dazu beitragen, die NFRs zu stärken.
  5. Verbinden Sie Anforderungen mit Geschäftszielen: Jede NFR sollte einem konkreten Zweck dienen. Wenn Verfügbarkeit, Geschwindigkeit oder Sicherheit Ihrem Unternehmen helfen, Geld zu verdienen oder Kunden zu binden, muss dies in Ihren Anforderungen klar zum Ausdruck kommen. Sagen Sie „99,9 % Verfügbarkeit, um Online-Bestellungen zu erfüllen“ statt nur „hohe Verfügbarkeit“. So stellen Sie sicher, dass das Team versteht, warum die Anforderung wichtig ist.
  6. Gruppieren Sie NFRs in Kategorien: Anstatt eine lange Liste von NFRs zu erstellen, gruppieren Sie diese nach Typen, wie z. B. Leistung, Zuverlässigkeit, Skalierbarkeit usw.
  7. Verwenden Sie eine einheitliche Formatierung und Terminologie: Achten Sie darauf, ein Standardformat für die Beschreibung der Anforderungen zu verwenden. Sie können für jede Anforderung eine Anforderungs-ID, eine Beschreibung, eine Priorität und Bewertungskriterien festlegen.
  8. Verwenden Sie die richtigen Tools, um die Arbeit zu vereinfachen: Verwenden Sie die richtigen Tools für das Anforderungsmanagement. Modern Requirements4DevOps, eine nativ in Azure DevOps integrierte Lösung für das Anforderungsmanagement, bietet Funktionen wie Rückverfolgbarkeit von Anforderungen, Versions- und Variantenmanagement, Dokumentenmanagement, Überprüfungsmanagement usw.

Mit Modern Requirements4DevOps bessere Dokumente für nicht-funktionale Anforderungen erstellen

Die Dokumentation nicht-funktionaler Anforderungen ist wichtig, um sicherzustellen, dass alle Teammitglieder und Stakeholder ein gemeinsames Verständnis der Projektziele haben. Mit einer klaren Dokumentation können Teams das Risiko von Missverständnissen minimieren, die zu kostspieligen Nacharbeiten führen können.

Hier haben wir einige wichtige Funktionen von Modern Requirements4DevOps vorgestellt, die den Workflow zur Erstellung von Anforderungsdokumentationen vereinfachen können.

  1. Smart Docs: Mit diesem Modul können Teams direkt in Azure DevOps aktuelle Anforderungsdokumente erstellen und verwalten. Es bietet eine Microsoft Word-ähnliche Oberfläche zum Erstellen und Bearbeiten von Dokumenten. Darüber hinaus können Teams die Anforderungen aus Backlogs direkt mit Dokumenten verknüpfen. Wenn also Anforderungsdaten geändert werden, werden diese Änderungen sofort im Dokument angezeigt.
  1. Wiederverwendbare Vorlagen: Das Smart Docs-Modul bietet auch wiederverwendbare Meta-Vorlagen. Benutzer können eine Meta-Vorlage einmal erstellen und sie dann in mehreren Dokumenten wiederverwenden. Durch die Verwendung wiederverwendbarer Vorlagen können Teams die Konsistenz ihrer Dokumente verbessern und Zeit sparen, die sie sonst für die Erstellung von Dokumenten von Grund auf aufwenden müssten.
  1. Copilot4DevOps: Hierbei handelt es sich um einen KI-Assistenten für das Anforderungsmanagement innerhalb von Azure DevOps, der mit Modern Requirements4DevOps geliefert wird. Er ermöglicht es Benutzern, Anforderungen aus Rohdaten zu extrahieren, Anforderungen mithilfe von KI zu analysieren, SOPs/Dokumente zu erstellen usw. Entdecken Sie weitere Funktionen von Copilot4DevOps.
Copilot4DevOps KI-Assistent mit Automatisierungs- und Analysefunktionen.
Copilot4DevOps: KI-gestützte Tools für ein intelligenteres Anforderungsmanagement.
  1. Versionskontrolle: Mithilfe des von MR4DevOps angebotenen Versionskontrollsystems können Teams Änderungen an den Dokumenten nachverfolgen. Auf diese Weise können Teams beobachten, wie sich die NFR im Laufe der Zeit entwickelt hat.
  1. Review-Management: Teams können das Modul zur Überprüfungsverwaltung verwenden, um Anfragen zur Überprüfung von Dokumenten zu erstellen und diese an die Beteiligten zu senden, um Feedback zu erhalten. Mit diesem Modul können Teams die Anforderungsdokumente gemeinsam ändern und überprüfen.

Durch die Nutzung der oben genannten Funktionen von Modern Requirements4DevOps können Teams gut strukturierte und konsistente Dokumente mit nicht-funktionalen Anforderungen erstellen. Darüber hinaus können Teams mit Hilfe von Copilot4DevOps in wenigen Sekunden präzise Dokumente aus vordefinierten NFRs generieren.

Häufig gestellte Fragen (FAQs)

1. Was sind die funktionalen und nicht-funktionalen Anforderungen?

Die funktionalen Anforderungen definieren die wichtigsten Funktionen des Systems, während die nicht-funktionalen Anforderungen die Betriebsfähigkeiten des Systems definieren, darunter die Systemleistung, Verfügbarkeit, Skalierbarkeit usw.

Vorlagen für nicht-funktionale Anforderungen bieten eine vordefinierte Struktur zur Definition von NFRs. Sie gewährleisten die Konsistenz aller NFRs.

Ja, mit Copilot4DevOps können Teams NFRs aus Rohtexten, Dokumenten, Diagrammen usw. extrahieren und direkt im Azure-Arbeitsbereich speichern.

Es gibt mehrere Tools auf dem Markt, aber wenn Sie Azure DevOps für das Projektmanagement verwenden, kann Modern Requirements4DevOps eine gute Wahl sein.

Das Team sollte regelmäßige Kontrollpunkte für die Überprüfung und Aktualisierung der NFRs festlegen. Die Teams sollten diese auch nach größeren Aktualisierungen im System überprüfen.

Inhaltsverzeichnis
Beginnen Sie noch heute mit der Nutzung von Modern Requirements.

✅ Definieren, verwalten und verfolgen Sie Anforderungen innerhalb von Azure DevOps
✅ Arbeiten Sie nahtlos mit regulierten Teams zusammen
✅ Starten Sie KOSTENLOS – keine Kreditkarte erforderlich

Aktuelle Artikel