Warum nicht-funktionale Anforderungen immer wichtiger werden

Wenn ein System dessen Funktion nicht erfüllt, haben wir ein ernsthaftes Problem: Was wäre ein Musikplayer, der keine Musik abspielt? Doch es gibt auch viele Anforderungen, die nichts direkt mit der Funktion des Systems zu tun haben. Und die werden immer wichtiger.

Zuerst zur Terminologie: Bei den funktionalen Anforderungen geht es, nun ja, um die Funktion des Systems. Was soll das System tun? Der Musikplayer soll Musik abspielen (unter anderem). Für das Arbeiten mit Funktionalen Anforderungen gibt es eine lange Tradition und viele Ansätze.

Das Wort „nicht-funktionale Anforderung“ wird oft kritisiert, unter anderem weil der Name suggeriert, dass diese nicht so wichtig sind. Deswegen wird auch oft der Begriff „Qualitätseigenschaft“ benutzt.

Nicht-funktionale Anforderungen kommen in vielen Schattierungen. Manche sind direkt relevant für den Nutzer, wie Aussehen oder Leistung. Andere sind indirekt relevant, wie Sicherheit oder Betriebskosten.

Form Follows Function

Seit langem schon gibt es den Leitsatz im Design, „Form Follows Function“ – die Funktion kommt an erster Stelle, und die Form (eine nicht-funktionale Eigenschaft) darf dieser nicht im Weg stehen und unterstützt diese im besten Fall.

Diese Denkweise ist auch heute noch ohne Zweifel wichtig und richtig. Allerdings erleben wir zur Zeit eine Entkopplung von Form und Funktion, getrieben zum Teil von Software. Insbesondere bei Produkten, die sich „stabilisiert“ haben, ist dies leicht zu erkennen: Bei Autos haben sich vier Räder bewährt, bei Smartphones die flache, rechteckige Form mit dem Display auf einer Seite. Auch wenn es Varianten gibt, so ist es hier schwierig, sich zu differenzieren. Die kommt oft von nicht-funktionalen Eigenschaften.

Gleichberechtigt schon in der Entwicklung

Funktionen rücken auch schon deswegen etwas in den Hintergrund, da diese oft per Software nachgerüstet werden können. Bei der Entwicklung reicht es also manchmal aus, wenn eine Funktion potentiell unterstützt werden kann. Zum Beispiel könnte der anfangs erwähnte Musikplayer nachträglich mit der Möglichkeit ausgestattet werden, andere Dateiformate abzuspielen. Für den Endkunden wird dadurch eine fehlende Funktion entschärft.

Gleichzeitig sind die nicht-funktionalen Eigenschaften oft die, mit denen der Nutzer in Berührung kommt. Wer erinnert sich nicht an Fahrkartenautomaten mit grauenvoller Benutzerführung? Die Funktion ist vorhanden, aber die nicht-funktionale Benutzerführung macht die Benutzung zum Frust.

Nicht-funktionale Anforderungen in die Entwicklung einbringen

Gerade in der Softwareentwicklung ist es recht leicht, nicht-funktionale Anforderungen von Anfang an mit zu spezifizieren und zu berücksichtigen. Durch das Arbeiten mit User Stories, zum Beispiel, haben oft positive Auswirkungen auf die Usability. Automatisierte Lasttests stellen frühzeitig sicher, dass das System performant ist, usw.

Selbst in der Modellierung können nicht-funktionale Anforderungen berücksichtigt werden. Das kann über darauf ausgerichtete Sprachen geschehen, aber auch durch die Quantifizierung von Aspekten (bspw. Performance), oder durch das systematische Erfassen von Querschnittsbelangen.

Funktionen sind leicht zu erkennen und von Mitbewerbern zu kopieren. Nicht-funktionale Anforderungen sind ein wichtiger Weg, sich von Mitbewerbern abzusetzen. Das war früher nicht so, und deshalb sind nicht-funktionale Anforderungen wichtiger denn je.

Photo by Cody Davis on Unsplash

Michael Jastram

Creator and Author of SE-Trends