Es gibt bereits eine ausgezeichnete Antwort von Aaronaught, aber da es andere Antworten gab, die jetzt entfernt wurden und in Bezug auf eine nicht funktionierende Anforderung völlig falsch waren, halte ich es für nützlich, ein paar Erklärungen hinzuzufügen, um die Fehler bei einer zu vermeiden nichtfunktionale Anforderung ist.
Eine nichtfunktionale Anforderung ist "eine Qualität oder Eigenschaft, die das Produkt haben muss" ¹. James Taylor sagt, dass eine nicht funktionierende Anforderung "[...] dennoch eine Anforderung ist und für den Kunden wichtig ist - manchmal sogar wichtiger als eine funktionierende Anforderung" . Anschließend nennt er zwei Beispiele: das Logo des Produkts sowie die Genauigkeit und Zuverlässigkeit der Ausrüstung. Diese beiden Beispiele zeigen sehr gut, dass:
- Die nicht-funktionalen Anforderungen sind kein Marketing-Jibber-Jabber wie: "Internet ist heutzutage wichtig und wir wollen eine Website haben".
- Die nichtfunktionalen Anforderungen betreffen die Kunden, da sie ihre Produktivität und die Fähigkeit, das Produkt selbst zu verwenden, stark beeinträchtigen können.
- Die nicht funktionalen Anforderungen sind absolut objektiv.
Der letzte Punkt ist wichtig. Wenn die Anforderung subjektiv ist, hat sie in der Liste der Anforderungen nichts zu tun. Es wäre unmöglich, Validierungstests aus subjektivem Material zu erstellen . Der einzige Zweck der Anforderungsliste besteht darin, die eindeutigen Erwartungen des Kunden aufzuzählen. "Ich möchte, dass dieses Quadrat rot ist" ist eine Voraussetzung. "Ich möchte, dass dieses Quadrat eine schöne Farbe hat" ist ein erklärungsbedürftiger Wunsch.
Denken Sie daran, dass die Liste der Anforderungen einem Vertrag gleicht (und in den meisten Fällen Teil eines Vertrags ist). Es wird vom Kunden und der Entwicklungsfirma unterzeichnet und im Falle eines Rechtsstreits wird es rechtlich verwendet, um festzustellen, ob Sie Ihre Arbeit korrekt ausgeführt haben. Was passiert, wenn ich ein Softwareprodukt bestelle, festlege, dass "das Produkt großartig sein muss", und die Zahlung verweigere, wenn das Produkt fertig ist, weil für mich das, was Sie tatsächlich getan haben, kein großartiges Produkt ist?
Schauen wir uns einige Beispiele an.
1. Das Softwareprodukt reagiert auf den Endbenutzer.
Dies ist keine Voraussetzung. Kein funktionaler. Kein nicht funktionsfähiger. Es ist einfach keine Voraussetzung. Überhaupt. Es hat den Wert Null. Sie können während des Validierungstests nicht überprüfen, ob das Softwaresystem diese Anforderung erfüllt. Weder Sie - die QS-Abteilung noch der Kunde.
2. Das erneute Laden der Benutzerstatistik führt zu 90% der Zeit unter 100 ms aus. Bei Tests auf einem Computer mit den in Anhang G Teil 2 angegebenen Leistungen und einer Auslastung von weniger als 10% für die CPU, weniger als 50% für den Arbeitsspeicher und keinen aktiven R / W-Festplattenvorgängen.
Es ist eine Voraussetzung. Wenn der Anhang G Teil 2 genau genug ist, kann ich die Maschine mit der ähnlichen Hardware nehmen und den Validierungstest in der QS-Abteilung durchführen, und ich erhalte immer ein binäres Ergebnis: bestanden oder nicht bestanden.
Ist es eine funktionale Anforderung? Nein, es gibt nicht an, was das System tun muss. Es gab wahrscheinlich eine funktionale Anforderung, die angab, dass die Softwareanwendung in der Lage sein muss, Benutzerstatistiken neu zu laden.
Ist es eine nicht funktionierende Anforderung? Es ist. Es gibt eine Eigenschaft an, die ein Produkt haben muss, dh die maximale / durchschnittliche Antwortzeit unter Berücksichtigung des prozentualen Schwellenwerts.
3. Die Anwendung ist in C # geschrieben.
Ist das eine Voraussetzung? Ohne Kontext wissen wir es nicht wirklich. Es könnte ein Wunsch des leitenden Entwicklers sein, durch das Einfügen dieser Anforderung eine spätere Diskussion mit seinen Kollegen über die zu verwendende Sprache zu vermeiden. Dies kann auch eine Anforderung sein, die auf Hardware- / Software-, Legacy- oder Kompatibilitätselementen basiert. Wir wissen es nicht.
4. Die C # -Codebasis des Produkts entspricht den empfohlenen Microsoft-Mindestregeln und den Microsoft-Globalisierungsregeln.
Das ist eine seltsame Sache. Persönlich würde ich es eher nicht als Anforderung bezeichnen und es in ein separates Dokument einfügen, in dem die Standards und Best Practices aufgeführt sind.
5. Das Hauptfenster der Anwendung hat einen blauen (# 00f) 10px-Rand mit rosa (#fcc) gefüllten Kreisen. Diese Kreise befinden sich am inneren Rand des Randes und haben einen Durchmesser von 3px, der um 20px voneinander getrennt ist.
Es ist eine Anforderung und eine nicht funktionierende. Es gibt etwas an, das wir während des Validierungstests testen dürfen, und es gibt eine Eigenschaft des Produkts an, nicht die, für die das Produkt vorgesehen ist.
6. Das Fahrzeugverfolgungssystem misst die Geschwindigkeit mit einer Genauigkeit von ± 0,016 km / h.
Auch eine nicht funktionierende Anforderung. Es gibt eine messbare Schwelle für die Präzision des Systems. Es sagt nicht aus, was das System tun muss, sondern wie genau es seine Arbeit erledigt. Aber warte? Es sagt, dass das Fahrzeug-Tracking-System die Geschwindigkeit misst , nicht wahr? Also ist es auch eine funktionale Anforderung? Nun, nein, da wir einen Akzent auf die Genauigkeit der Messung legen, nicht auf die Tatsache, dass die Messung durchgeführt wird.
7. Das Fahrzeugverfolgungssystem misst die Geschwindigkeit des Fahrzeugs.
Jetzt ist es eine funktionale Anforderung. Es sagt nicht, wie das System funktioniert, sondern was es tut. Durch funktionale Anforderungen konnten wir lernen, dass das Fahrzeug-Tracking-System die Geschwindigkeit, die Batterieleistung und den Druck misst, von dem ich nicht weiß, was und ob die Lichter an sind oder nicht.
8. Die Seiten der Website dauern 850 ms. Laden.
Dies ist keine Voraussetzung. Ist versucht einer zu sein, ist aber total ungültig. Wie würden Sie das verwerten? Welche Seiten? Alle? Getestet über ein lokales 1-Gbit / s-Netzwerk auf einem Quad-Core-Client-Computer und einem 8-Core-Server mit SSDs, die zu 2% verwendet werden, oder über ein Modem eines alten und beschissenen Laptops, während die Website von einem kleinen Server gehostet wird, der zu 99% verwendet wird. ? Was ist mit "laden" gemeint? Bedeutet das Herunterladen der Seite? Herunterladen und Anzeigen? Senden Sie die POST-Anfrage mit einigen großen Datenmengen, laden Sie dann die Antwort und zeigen Sie sie an?
Zusammenfassend ist eine nicht-funktionale Anforderung immer eine Anforderung, was bedeutet, dass sie etwas beschreibt, das absolut objektiv ist und durch einen automatisierten oder manuellen Validierungstest überprüft werden kann. Statt jedoch zu sagen, was das System tut, wird erläutert, wie das System arbeitet tut etwas oder wie das System selbst ist .
¹ Verwalten von Informationstechnologieprojekten: Anwenden von Projektmanagementstrategien auf Software-, Hardware- und Integrationsinitiativen, James Taylor, ISBN: 0814408117.