Was sind nicht-funktionale Anforderungen? Ausführlicher Leitfaden + Beispiele

10 min read
November 29, 2024

Anforderungen sind der Eckpfeiler eines jeden Softwareprojekts – ohne Ausnahme.

Sie sind also ein absolutes Muss, wenn Sie Ihr Projekt zum Erfolg führen wollen.

Ohne gut definierte nicht-funktionale Anforderungen wird selbst die funktionsreichste Software die Erwartungen nicht erfüllen.

Hier werden wir uns näher mit nicht-funktionalen Anforderungen befassen – was sie sind, warum sie wichtig sind, wie man sie schreibt und vieles mehr.

Lasst uns eintauchen!

Was sind nicht-funktionale Anforderungen? Ein genauerer Blick

Nicht-funktionale Anforderungen (NFRs) definieren die Eigenschaften eines Systems. Mit anderen Worten: Es geht nicht darum, was ein System tut, sondern wie es funktioniert.

Ein Beispiel: Eine funktionale Anforderung könnte sein, dass eine App es Benutzern ermöglicht, sich anzumelden, aber eine nicht-funktionale Anforderung definiert, wie schnell, sicher oder zuverlässig diese Anmeldung erfolgt.

by 2 2

Brauchen Sie Hilfe bei Ihrem Projekt? Lassen Sie uns reden →.

Sie werden mit unseren Technologieexperten sprechen.

Warum sind sie also wichtig?

Denken Sie an ein Auto. Seine Fahrtauglichkeit (funktional) ist wichtig, aber Faktoren wie Kraftstoffeffizienz, Sicherheit und Komfort (nicht funktional) bestimmen seinen Gesamterfolg.

NFRs erfüllen dieselbe Aufgabe für Software. Sie stellen sicher, dass die von Ihnen entwickelte Software die Erwartungen der Benutzer und die Unternehmensziele erfüllt.

Sie sind ein wesentlicher Bestandteil jedes Software-Anforderungsspezifikationsdokuments (SRS).

SRS document components

Eine SRS ist wie eine Blaupause für die Softwareentwicklung, die alle wesentlichen Elemente enthält, die Sie für die erfolgreiche Erstellung eines Softwareprodukts benötigen.

Klare und gut formulierte Anforderungen sind der Schlüssel zu einem erfolgreichen Produkt – 37 % der Projekte scheitern an unklaren oder falschen Anforderungen.

Wenn sie richtig sind, können Sie Verwirrung, Unsicherheit und unnötige Verzögerungen während der Entwicklung vermeiden.

Und genau deshalb sind sie so wichtig.

Funktionale vs. nicht-funktionale Anforderungen: Hauptunterschiede

Funktionale und nicht-funktionale Anforderungen klingen zwar ähnlich, sind aber sehr unterschiedlich.

Funktionale Anforderungen definieren , was ein System tut. Sie beschreiben die Merkmale und Funktionalitäten, die es den Benutzern ermöglichen, ihre Ziele zu erreichen.

Dies könnte etwa so aussehen:

  • Eine Suchleiste, die relevante Ergebnisse abruft
  • Ein Zahlungs-Gateway für die Abwicklung von Transaktionen
  • Ein Anmeldesystem mit E-Mail- und Passwort-Authentifizierung

Wie bereits erwähnt, konzentrieren sich nicht-funktionale Anforderungen auf die Leistung des Systems. Sie setzen Maßstäbe für Leistung, Skalierbarkeit, Sicherheit und mehr.

So könnten sie aussehen:

  • Sicherstellen, dass die Suchleiste innerhalb von 2 Sekunden Ergebnisse liefert.
  • Gewährleistung einer Betriebszeit von 99,95 % für das Zahlungsgateway.
  • Verschlüsselung der Anmeldedaten mit AES-256-Verschlüsselung.

Vereinfacht ausgedrückt beschreiben funktionale Anforderungen, was Ihre Software leistet, während nicht-funktionale Anforderungen beschreiben, wie sie es leistet.

Hier ist ein detaillierterer Vergleich:

Funktionale vs. nicht-funktionale Anforderungen: Vergleich

KategorieFunktionale AnforderungenNicht-funktionale Anforderungen
SchwerpunktWas die Software leistetWie die Software funktioniert
UmfangAufgabenspezifisch und zielorientiertSystemweit, konzentriert auf spezifische Merkmale
MessungGemessen durch Prüfung einzelner Merkmale (bestanden/nicht bestanden)Gemessen an spezifischen Kriterien wie Geschwindigkeit und Zuverlässigkeit
NutzerperspektiveDirekter Einfluss auf die Interaktion der Nutzer mit Ihrem ProduktIndirekte Auswirkungen auf die Zufriedenheit und Erfahrung der Nutzer
DokumentationIn der Regel detailliert durch User Stories und Use CasesIn der Regel in Service Level Agreements (SLAs) oder technischen Spezifikationen definiert
Häufigkeit der ÄnderungenWird sich wahrscheinlich mit den veränderten Bedürfnissen der Nutzer weiterentwickelnMehr Stabilität
PrüfungVerifiziert durch Funktionstests, z. B. Einheitstests, IntegrationstestsVerifiziert durch nicht-funktionale Tests, z.B. Lasttests, Sicherheitstests
Auswirkungen auf die EntwicklungWesentlich für den Betrieb des KernsystemsEffektivität und Effizienz der Kernprozesse

Die wichtigste Erkenntnis ist jedoch, dass funktionale und nicht-funktionale Anforderungen zwei Hälften desselben Ganzen sind .

In Kombination helfen sie Ihnen bei der Erstellung von Software, die funktional und zuverlässig ist und einen Mehrwert bietet.

Und genau deshalb sind sie der Schlüssel zu einer erfolgreichen Entwicklung.

Beispiele für nicht-funktionale Anforderungen

Nachdem wir sie nun definiert haben, werden wir Ihnen einige konkrete Beispiele für nicht-funktionale Anforderungen geben.

Um die Sache zu vereinfachen, nehmen wir eine Fintech-App als Beispiel.

Hier sind einige Beispiele für nicht-funktionale Anforderungen, die Sie schreiben könnten:

  • Die App muss in der Lage sein, 1000 Transaktionen pro Sekunde mit einer durchschnittlichen Antwortzeit von weniger als 2 Sekunden zu verarbeiten.
  • In Spitzenzeiten muss das System eine Latenzzeit von unter 1,5 Sekunden einhalten.
  • Die App sollte so skaliert werden, dass sie in Zeiten hoher Nachfrage eine 10-fache Zunahme der täglich aktiven Nutzer bewältigen kann.
  • Alle Nutzerdaten müssen bei der Übertragung und Speicherung mit AES-256 verschlüsselt werden.
  • Die App muss die Multi-Faktor-Authentifizierung (MFA) für alle Benutzeranmeldungen unterstützen.
  • Die Transaktionen müssen den PCI DSS-Standards entsprechen, um einen sicheren Umgang mit Zahlungsinformationen zu gewährleisten.
  • Die App muss eine Betriebszeit von 99,99 % garantieren und darf nicht mehr als 52,56 Minuten Ausfallzeit pro Jahr aufweisen.
  • Bei einem Serverausfall müssen Failover-Mechanismen sicherstellen, dass das System innerhalb von 30 Sekunden wiederhergestellt wird.
  • Neue Nutzer müssen den Registrierungsprozess in weniger als 3 Minuten abschließen, mit klarer Anleitung und Fehlerbehandlung.
  • Zugänglichkeitsfunktionen, wie Bildschirmlesegeräte und Sprachbefehle, müssen den WCAG 2.2-Standards entsprechen.
  • Das System muss es ermöglichen, Fehlerkorrekturen innerhalb von 12 Stunden nach Feststellung kritischer Probleme bereitzustellen.
  • Die App muss der GDPR entsprechen, um den Datenschutz für europäische Nutzer zu gewährleisten.
  • Sie muss die AML- (Anti-Geldwäsche) und KYC-Vorschriften (Know-your-customer) erfüllen, um Finanzkriminalität zu verhindern.
  • Die App muss nahtlos auf iOS, Android und Webbrowsern mit gleichbleibender Leistung funktionieren.
  • Das System sollte rund um die Uhr verfügbar sein, wobei sich die Ausfallzeiten auf die geplante Wartung beschränken.

Nicht-funktionale Anforderungen sind mehr als nur technische Details und Spezifikationen.

Sie sind der Schlüssel zur Entwicklung zuverlässiger, benutzerorientierter und langlebiger Software.

Als Nächstes werden wir (einige) der verschiedenen Arten von nicht-funktionalen Anforderungen behandeln.

Arten von nicht-funktionalen Anforderungen

Nicht-funktionale Anforderungen können in verschiedene Typen eingeteilt werden, die jeweils auf einen bestimmten Aspekt des Systemverhaltens abzielen.

Es gibt viele verschiedene Arten von nicht-funktionalen Anforderungen, und wir können sie nicht alle abdecken.

Aber die wichtigsten werden im Folgenden behandelt.

Wir nehmen eine Fitness-App als Beispiel, damit sie leichter zu verstehen sind.

  • Leistungsanforderungen

Die Leistungsanforderungen konzentrieren sich auf die Geschwindigkeit und Effizienz eines Systems unter verschiedenen Bedingungen.

Wenn Sie eine Fitness-App entwickeln, könnte eine Leistungsanforderung lauten: „Die App muss Trainingsdaten in Echtzeit von tragbaren Geräten innerhalb von 3 Sekunden nach Abschluss synchronisieren.“

  • Anforderungen an die Skalierbarkeit

Die Anforderungen an die Skalierbarkeit beziehen sich auf die Fähigkeit des Systems, ein Wachstum zu bewältigen, sei es durch mehr Benutzer oder Daten.

Bei einer Fitness-App könnte eine Skalierbarkeitsanforderung lauten: „Das Backend muss während einer Werbekampagne einen Anstieg der protokollierten Trainingseinheiten um 500 % ohne Ausfallzeiten bewältigen.“

  • Anforderungen an die Sicherheit

Sicherheitsanforderungen schützen Daten und Systeme vor unberechtigtem Zugriff und Schwachstellen.

Eine Sicherheitsanforderung für eine Fitness-App könnte lauten: „Alle gespeicherten Gesundheitsdaten der Nutzer müssen mit AES-256 verschlüsselt werden.“

  • Anforderungen an die Verlässlichkeit

Bei den Zuverlässigkeitsanforderungen geht es darum, sicherzustellen, dass das System stets betriebsbereit und zuverlässig ist.

Bei einer Fitness-App könnte eine Anforderung an die Zuverlässigkeit lauten: „Wenn der Server abstürzt, sollten die Benutzer offline auf zwischengespeicherte Trainingsprotokolle zugreifen können.“

  • Anforderungen an die Benutzerfreundlichkeit

Die Anforderungen an die Benutzerfreundlichkeit stellen sicher, dass die App für alle Benutzer intuitiv und ansprechend ist.

Eine Anforderung an die Benutzerfreundlichkeit könnte etwa so lauten: „Die Benutzer müssen in der Lage sein, eine neue Trainingseinheit in weniger als 2 Minuten zu protokollieren, auch ohne vorherige Erfahrung mit der App.

  • Anforderungen an die Wartbarkeit

Die Anforderungen an die Wartbarkeit konzentrieren sich darauf, dass das System im Laufe der Zeit leicht zu aktualisieren, zu ändern oder zu reparieren ist.

Bei einer Fitness-App könnte eine Anforderung an die Wartbarkeit lauten: „Fehlerbehebungen für kritische Probleme müssen innerhalb von 24 Stunden nach ihrer Identifizierung bereitgestellt werden können.“

  • Anforderungen an die Einhaltung

Bei den Compliance-Anforderungen geht es darum, sicherzustellen, dass Ihre Software den einschlägigen gesetzlichen, behördlichen und branchenüblichen Standards entspricht.

Dies könnte sein: „Alle Ernährungsempfehlungen müssen mit den USDA-Richtlinien übereinstimmen, um Genauigkeit zu gewährleisten“.

  • Anforderungen an die Übertragbarkeit

Die Anforderungen an die Portabilität stellen sicher, dass das System auf verschiedenen Plattformen und in verschiedenen Umgebungen gut funktioniert.

In unserem Fitness-App-Beispiel könnte eine Portabilitätsanforderung lauten: „Die App muss sowohl auf Android- als auch auf iOS-Geräten reibungslos funktionieren und die Daten über alle eingeloggten Plattformen hinweg synchronisieren.“

  • Anforderungen an die Verfügbarkeit

Bei den Verfügbarkeitsanforderungen geht es darum, dass die Benutzer jederzeit auf die Anwendung zugreifen können.

Bei einer Fitness-App könnte dies lauten: „Die Nutzer müssen auch während der Serverwartung durch Offline-Caching Zugriff auf Trainingspläne und Protokolle haben.“

Als Nächstes besprechen wir die besten Praktiken, die Sie befolgen sollten, um gute nicht-funktionale Anforderungen zu schreiben.

Bewährte Praktiken für das Schreiben nicht-funktionaler Anforderungen

Schlecht geschriebene nicht-funktionale Anforderungen führen zu Missverständnissen, Verzögerungen oder Software, die die Erwartungen der Benutzer nicht erfüllt.

Die Art und Weise, wie Sie sie schreiben, kann über Erfolg oder Misserfolg eines Produkts entscheiden – Sie können es sich also nicht leisten, einen Fehler zu machen.

Im Folgenden finden Sie bewährte Verfahren, die Sie befolgen sollten, um sicherzustellen, dass Ihre Anforderungen klar, messbar und umsetzbar sind:

  • Schreiben Sie spezifische und messbare Anforderungen

Vage Anforderungen führen zu Unklarheiten und schlechter Umsetzung. Stellen Sie sicher, dass jede Anforderung spezifisch und leicht quantifizierbar ist.

Anstatt also zu sagen: „Das System sollte gut funktionieren“, schreiben Sie: „Das System muss 10.000 Anfragen pro Sekunde mit einer Antwortzeit von unter 2 Sekunden verarbeiten.“

  • Anforderungen mit Geschäftszielen abstimmen

Ihre nicht-funktionalen Anforderungen sollten Ihre Prioritäten und langfristigen Ziele widerspiegeln.

Wenn Sie z. B. eine E-Commerce-Anwendung haben, sollten Sie während des Weihnachtsgeschäfts der Betriebszeit und Skalierbarkeit Priorität einräumen.

Schreiben: „Das System muss so skaliert werden, dass es eine 200%ige Zunahme des Datenverkehrs während des Black Friday bewältigen kann.“

  • Schreiben Sie sie in einfacher Sprache

Vermeiden Sie (zu viel) Fachjargon. Die Anforderungen sollten für alle klar sein, von den Entwicklern bis zu den Geschäftsführern.

Anstatt also zu schreiben: „Erreichen Sie eine Latenzschwelle von 50 ms“, schreiben Sie: „Das System sollte auf Benutzeraktionen innerhalb von 50 Millisekunden reagieren.“

  • Standardisierte Vorlagen verwenden

Durch Konsistenz werden Ihre Anforderungen leichter zu lesen und umzusetzen sein. Verwenden Sie Vorlagen oder Frameworks, um sie zu strukturieren.

Hier ist ein Beispiel:

  • Anforderung: Die App muss in Spitzenzeiten 1.000 gleichzeitige Nutzer bewältigen.
  • Metrik: Gleichzeitige Nutzer.
  • Schwellenwert: 1.000 Benutzer.
  • Messverfahren: Belastungstest.

Wiederverwendbare Vorlagen helfen Ihnen auch, die Dokumentation für verschiedene Projekte zu standardisieren.

  • Priorisieren Sie kritische Anforderungen

Nicht alle Anforderungen sind gleich. Konzentrieren Sie sich auf diejenigen, die den größten Einfluss auf die Kernfunktionalität Ihrer Software oder die Benutzerfreundlichkeit haben.

So sollten Sie beispielsweise der Betriebszeit Vorrang vor ästhetischen Anforderungen an die Benutzeroberfläche einräumen, vor allem, wenn Sie eine Bankanwendung entwickeln.

  • Validierung der nicht-funktionalen Anforderungen durch Tests

Jede nicht-funktionale Anforderung sollte testbar sein.

Wenn man es nicht überprüfen oder messen kann, ist es keine gute Voraussetzung.

  • Abwägen von Kompromissen

Die Verbesserung einer nicht-funktionalen Anforderung kann sich auf andere auswirken. Die Verbesserung der Sicherheit kann sich zum Beispiel auf die Leistung auswirken.

Sie müssen sicherstellen, dass Sie das richtige Gleichgewicht finden. Diskutieren Sie die Kompromisse mit den Beteiligten und dokumentieren Sie die Gründe für Ihre Entscheidungen.

  • Regelmäßige Überprüfung und Verfeinerung Ihrer Anforderungen

Wenn sich Ihr Produkt weiterentwickelt, müssen Sie Ihre Anforderungen anpassen. Durch regelmäßige Überprüfungen bleiben sie relevant.

Planen Sie regelmäßige Überprüfungen, um sicherzustellen, dass sie an die neuesten geschäftlichen und technischen Änderungen angepasst sind.

Suchen Sie einen zuverlässigen Partner für die Softwareentwicklung?

Haben Sie Schwierigkeiten, einen zuverlässigen Partner für die Softwareentwicklung zu finden, und die Suche nach einem solchen Partner treibt Ihnen die Haare zu Berge?

Dann sind Sie hier genau richtig.

Wir sind ein hochkarätiges Full-Service-Softwareentwicklungsunternehmen und können Ihnen helfen, Ihr Produkt von Grund auf zu entwickeln.

Und wir werden langfristig dabei sein.

Wenn Sie mehr erfahren möchten, wenden Sie sich an unser Team, das gerne einen Termin mit Ihnen vereinbart, um Ihre Bedürfnisse im Detail zu besprechen.

Categories
Written by

Kristina Roskar

Solution architect

As a solution architect, Kristina makes sure no detail goes overlooked and every solution fits our clients' needs perfectly. Thanks to her knack for software architecture and deep love for all things tech, she can translate even the most complex business requirements into feasible software solutions. Outside of work, you'll find her enjoying board games with friends and planning her next unforgettable trip. Her ideal workspace? Somewhere where summer never ends, like the Seychelles. It doesn't get much better than that, right?

Related articles