Ich bin gerade dabei, eine Anforderungsspezifikation zu schreiben, und ich habe ein Dilemma bei der Formulierung eines Teils der Anforderungen.
Szenario: Wir laden Dateien von einer Website herunter und die heruntergeladenen Dateien müssen an ein Element in unserem CM-Tool angehängt werden. Die heruntergeladenen Dateien enthalten Namen, die ASCII, ISO-8859-1, Japanisch usw. sein können.
Deckt "Nicht-ASCII" in der folgenden Formulierung alle Situationen ab?
Der heruntergeladene Dateiname kann Nicht-ASCII-Zeichen enthalten, und die Verarbeitung dieser Zeichen führt nicht zum Absturz der Anwendung
Antworten:
Die Anforderung ist für mich, wie gesagt, unscharf.
Die erste Frage, die ich hätte, lautet: Wie viele Zeichenkodierungen müssen unterstützt werden? Mögliche Interpretationen sind:
Wenn Sie nicht angeben, welche Codierungen Sie meinen, haben Sie und der Implementierer möglicherweise einen Streit, wenn ein codierungsspezifischer Fehler auftritt, und Sie haben beide Recht. Das ist per definitionem die Konsequenz einer Fuzzy-Spezifikation.
Was muss die Software mit dem Dateinamen tun, abgesehen davon, dass sie nicht abstürzt? Sollte es…
Eine bessere Version Ihrer Anforderung wäre
Die spezifischen Beispiele der erforderlichen Codierungen sind für die Erstellung von Akzeptanzkriterien von wesentlicher Bedeutung. Die hinzugefügten Sätze geben an, was die Software tun muss, abgesehen davon, dass sie nicht abstürzt.
quelle
Die Anforderung, die Sie geschrieben haben, weist nicht die Merkmale einer guten Anforderung auf . Insbesondere ist es nicht zusammenhängend, es ist nicht atomar und es ist nicht eindeutig. Aufgrund des Fehlens dieser Eigenschaften ist es auch nicht leicht zu überprüfen.
Ihre anfängliche Statusanforderung ist:
Ich würde empfehlen, die entfernen "... und die Verarbeitung dieser soll die Anwendung nicht zum Absturz bringen". Wenn Sie die Anforderung haben, dass eine Software etwas tun muss, ist es meines Erachtens in Ordnung, davon auszugehen, dass dies ohne Absturz der Software möglich ist.
Dies wandelt die Anforderung in:
Jetzt haben Sie eine zusammenhängende und atomare Anforderung. Ich bin mir jedoch nicht sicher, ob es eindeutig ist. In Ihrer Frage erwähnen Sie eine Reihe von verschiedenen Formaten. Es gibt einige Möglichkeiten.
Einige empfehlen eine separate und eindeutige Anforderung für jede zu unterstützende Dateinamencodierung. Dies würde am besten zusammenhängende, atomare, nachvollziehbare, eindeutige und überprüfbare Anforderungen unterstützen. Dies würde es auch einfacher machen, die Wichtigkeit jeder Anforderung zu spezifizieren - möglicherweise ist die Unterstützung einiger Codierungen wichtiger oder wird früher benötigt.
Andere empfehlen möglicherweise eine Tabelle mit unterstützten Formaten, und diese Anforderung würde auf eine Tabelle verweisen. Es wäre weniger vollständig (Sie müssen einen Textsatz und eine Tabelle pflegen), aber sie befinden sich in demselben Dokument oder derselben Datenbank. Wenn Sie jedoch eine Verknüpfung in einem Anforderungsmanagement-Tool durchführen möchten, können diese miteinander verknüpft werden, sodass Änderungen an einer Anforderung die verknüpfte Anforderung hervorheben. Es würde auch ermöglichen, dass der Text unverändert in andere Softwarepakete fließt, jedoch mit einer anderen Tabelle für unterschiedliche Codierungen.
Wie Sie die Anforderungen dokumentieren, hängt jedoch von Ihren spezifischen Anforderungen ab.
quelle
Es gibt einige Probleme mit Ihrer Formulierung, die die Anforderung schwächen:
1) Sie sollten die Anforderung in positiven Begriffen ausdrücken und nicht in Begriffen dessen, was sie nicht tun sollte . Wie testet man auf "nicht abstürzen".
2) Die Formulierung "Der heruntergeladene Dateiname enthält möglicherweise ..." ist vage.
Eine vorgeschlagene alternative Formulierung (natürlich rein subjektiv) könnte sein:
Die Anwendung muss heruntergeladene Dateinamen unterstützen, die Nicht-ASCII-Zeichen enthalten.
(Das Wort "Unterstützung" ist immer noch ein wenig vage und könnte geändert werden, um konkreter zu werden, wenn es mit anderen Anforderungen für Ihre Bewerbung in Einklang gebracht wird.)
quelle
Das Problem mit der Spezifikation ist, dass sie nicht sagt, was die Anwendung mit "interessanten" Dateinamen machen soll. Ich bin auf ein Programm gestoßen, das alle Dateinamenzeichen ersetzt, die es nicht verstand
_
, mit der Folge, dass beim Kopieren eines Verzeichnisses, das zwei Zeichen enthielt, deren Namen mit Ausnahme der Zeichen, die das Dienstprogramm nicht verstand, die zweite Datei identisch waren in das Verzeichnis geschrieben würde das erste überschreiben. Ein solches Verhalten würde sich als "nicht abstürzen" qualifizieren, aber das sollte nicht bedeuten, dass es ohne eine explizite Angabe akzeptabel ist.Ich würde vorschlagen, dass eine gute Spezifikation positiv angibt, was passieren soll, oder ansonsten festlegt, welche Vorgehensweisen akzeptabel sind, z. B. "Wenn ein Dateiname nicht erkannte Zeichen enthält, sollte das System eine neue GUID für den Gesamtvorgang generieren und einen Dateinamen generieren Diese GUID, eine Indexnummer und ein beliebiger Teil des ursprünglichen Dateinamens werden kombiniert und es sollte eine Tabelle erstellt werden, die den alten und den neuen Dateinamen abbildet. "oder" Wenn ein Dateiname nicht erkannte Zeichen enthält, kann das System einen neuen bilden Name durch Verketten der erkannten Zeichen; wenn zwei Dateinamen durch eine solche Umwandlung identisch werden, kann einer willkürlich zum "Gewinner" erklärt werden. "
quelle