Prof. Dr. Christian Johner

Autor: Prof. Dr. Christian Johner

Inhaber der Johner Institut GmbH

Funktionale Anforderungen versus nicht-funktionale Anforderungen

Sonntag 13. Mai 2018

Viele Lastenhefte und Pflichtenhefte unterscheiden sogenannte funktionale Anforderungen und nicht-funktionale Anforderungen. Funktionale Anforderungen sind Anforderungen mit Bezug zur Zweckbestimmung des Produkts. Zu den nicht-funktionale Anforderungen zählen Anforderungen wie die Zuverlässigkeit und das Zeitverhalten.

Unterscheidung von funktionalen und nicht-funktionale Anforderungen

Diese Unterscheidung zwischen funktionalen und nicht-funktionalen Anforderungen stammt noch aus Zeiten der ISO 9126 (die inzwischen abgelöst wurde durch die ISO 25010):

Funktionale Anforderungen und nicht-funktionale Anforderungen unterscheidet die ISO 9126

Abb. 1: Funktionale Anforderungen und nicht-funktionale Anforderungen unterscheidet die ISO 9126

Die Trennung zwischen den beiden Typen an Anforderungen findet sich v.a. bei stand-alone Software.

a) Funktionale Anforderungen

Funktionale Anforderungen sind die Anforderungen, deren Umsetzung direkt der Zweckbestimmung des Produkts dienen. Sie sind spezifisch für dieses Produkt. Beispiele für diesen Typ an Anforderungen sind:

  • Die Software muss den Body-Mass-Index basierend auf einer Formel berechnen.
  • Die Software muss vor Arzneimitteln warnen, für die eine Kontraindikation oder Wechselwirkung vorliegt.

b) Nicht-funktionale Anforderungen

Nicht-funktionale Anforderungen hingegen sind meist unspezifisch für ein Produkt. Beispiele für nicht-funktionale Anforderungen sind:

  • Zeitverhalten: Das System muss innerhalb von 10ms das Ergebnis berechnet haben.
  • Ressourcenverbrauch: Das System kann 15.000 Transaktionen pro Sekunde bearbeiten ohne, dass die CPU zu mehr als 50% ausgelastet ist.
  • Robustheit: Das System kann 4 Wochen im Dauerbetrieb ohne ein Neustarten betrieben werden.
  • IT-Sicherheit: Die Software blockiert nach drei Fehlversuchen die Anmeldung für 30 Sekunden.

Probleme mit funktionalen und nicht-funktionalen Anforderungen

a) Schwierige Unterscheidung

Die Unterscheidung ist oft nicht trivial: Wo würden Sie die Fähigkeit eines Systems, Fehleingaben zu erkennen subsumieren?

  • Unter Gebrauchstauglichkeit? Eines der Prinzipien der Gebrauchstauglichkeit gemäß ISO 9241 ist die Fehlertoleranz.
  • Unter Zuverlässigkeit? Die ISO 9126 zählt die Fehlertoleranz explizit dazu.
  • Unter Funktionalität? Schließlich ist es eine Funktion des System Fehleingabe zu erkennen und darauf zu reagieren.

Auch lässt sich trefflich darüber streiten, ob die Interoperabilität wirklich keine funktionale Anforderung ist. Wie sollte sich denn die Funktionalität eines Systems außer über die UI denn sonst erfahren lassen?

Fazit: Eine Unterscheidung von funktionalen und nicht-funktionalen Anforderungen ist meist überflüssig. Die Software Requirements Specification muss aber sicherstellen, dass beide Typen an Anforderungen spezifiziert sind.

Die Nachfolge-Norm ISO 25010 betrachtet zwei Aspekte nicht mehr als funktionale Anforderungen:

  1. (IT-)Sicherheit
  2. Interoperabilität
Die ISO 25010 unterscheidet funktionale und nicht funktionale Anforderungen

Abb. 2: Auch die ISO 25010 kennt noch funktionale Anforderungen

Weiterführende Informationen

Lesen Sie hier mehr zur ISO 25010 und zur ISO 9126.

b) Aufteilung der Dokumentation

Manche Hersteller teilen die funktionalen und nicht-funktionalen Anforderungen auf verschiedene Dokumente auf: Die Produktmanager spezifizieren die funktionalen Anforderungen, die Entwickler die nicht-funktionalen.

Das Johner Institut rät von dieser Aufteilung ab. Damit laufen Hersteller in Gefahr, zusammengehörige Aspekte zu trennen und nicht-zusammengehörige Aspekte in einem Dokument zu beschreiben. Das führt zu regulatorischen Problemen u.a. mit der Freigabe und der Traceability.

Vorsicht!

Beachten Sie, dass die Wartbarkeit ein Aspekt der Architektur, nicht der System-Anforderungen ist!

In ein Lastenheft sollte Stakeholder-Anforderungen beschreiben, ein Pflichtenheft die Systemanforderungen. Letztere können Sie sehr gut mit der ISO 9126 bzw. der ISO 25010 auf Vollständigkeit prüfen.

c) Struktur der Dokumente

Die Strukturierung von Dokumenten nach der Taxonomie der ISO 9126 bzw. der ISO 25010 ist nicht sinnvoll. Das Johner Institut empfiehlt die Software-Anforderungen nach Schnittstellentyp aufzuteilen. Im Auditgarant stellt es vollständige Templates bereit, um die Anforderungen systematisch und normenkonform zu dokumentieren.

Weiterführende Informationen

Erfahren Sie hier mehr, wie Ihnen der Auditgarant helfen kann, Anforderungen schnell, präzise und gesetzeskonform zu dokumentieren und damit Verzögerungen bei der Entwicklung und Probleme in Audits zu minimieren.


Kategorien: Software & IEC 62304, Systementwicklung
Tags: ,

2 Kommentare über “Funktionale Anforderungen versus nicht-funktionale Anforderungen”

  1. David Föllenz schrieb:

    Steht die ISO25010 mit ihrer genauen Spezifikation für Studenten kostenlos zur Verfügung?

  2. Christian Johner schrieb:

    Nein, Sie könnten es höchstens über die Hochschulbibliothek versuchen…

Kommentar schreiben