Frage
Sollten die funktionalen Anforderungen in einem Anforderungsdokument einen auf Verben basierenden Wortlaut verwenden?
Kontext
Schulaufgabe, Teamarbeit, SDLC-Arbeit. Das Anforderungsdokument wurde erstellt und wir befassen uns jetzt mit dem Design.
Problem
Das Anforderungsdokument enthält eine Auflistung der Funktionen der App - der funktionalen Anforderungen. In dieser Liste sind Dinge enthalten, die ich eher als "Wie" als als "Was" bezeichnen würde. Wenn ich jetzt versuche, an Design zu arbeiten, habe ich das Gefühl, dass ein Teil des Designs vorzeitig diktiert wurde.
Ich habe das noch nie gemacht! Für mich sollte ich mich streng mit Dingen befassen, die "was" beschreiben.
Beispiel für Strom
Stellen Sie sich vor, es sei die Aufgabe, ein Omelett zuzubereiten. Auflistung: Ei knacken, in Schüssel brechen, rühren usw.; überquert die Linie in das Gebiet wie. Entlang dieser Spur finden sich auch Formulierungen wie: Erstellen, Generieren, Auflisten, Berechnen, Bestimmen, Validieren usw. - Verben im Grunde. Im Moment habe ich eine Liste von Anforderungen, die teilweise in Verben verwurzelt sind.
Meine Vorstellung von einem Anforderungsdokument für ein Omelett wäre eher wie: Hat zwei Eier, x Unzen Schinken, x Unzen Speck, x Unzen Montery-Jack-Käse, x Unzen Koriander usw. - nichts als was (Substantive) .
Ich hätte mich möglicherweise vor dem Abschluss des Anforderungsdokuments zu Wort melden können, wenn ich Erfahrung gehabt hätte.
quelle
Antworten:
Sie können und sollten Verben in Ihren Anforderungen verwenden. Wichtig ist, dass jede Anforderung wie folgt lautet:
Sie wären überrascht, wie gut Ihre Anforderungen ausfallen, wenn Sie diese drei Richtlinien um jeden Preis befolgen.
Stellen Sie außerdem sicher, dass Sie für jede Anforderung eine Begründung schreiben . Dies ist sehr wichtig und nützlich, wenn sich jemand fragt, warum eine bestimmte Anforderung erstellt wurde.
Und ja, Sie haben Recht, die Anforderungen sollten beschreiben, WAS die Software tun wird, nicht WIE sie es tun wird.
quelle
"Sollten die funktionalen Anforderungen in einem Anforderungsdokument einen auf Verben basierenden Wortlaut verwenden?"
Die kurze Antwort lautet "Ja", aber der Weg dorthin ist kurvenreich.
Wenn das Anforderungsdokument eine Sammlung von "soll" -Anweisungen ist, die als englische Sätze geschrieben sind, müssen Sie eine Verbalphrase haben. Und diese Verbalphrase wird das "soll xxx" wie in "das System soll xxx". Der Teil "xxx" ist eine von drei Arten von Verben: "be", "do" und "have". Diese Sätze müssen das System als Black Box beschreiben und nur die Dinge aufzeichnen, die von außen gesehen werden können. Wie Sie sagten, "das Was statt das Wie". Wenn es von außen sichtbar ist, ist es ein "Was".
Die einzig mögliche Funktion, die einem digitalen System zur Verfügung steht, besteht darin, den Wert einer Variablen zu ändern. Daher müssen alle funktionalen Anforderungen angeben, welche Variable geändert wird und welche Berechnungen für die Änderung verwendet werden. Dies sind die "do" -Anforderungen.
Die "be" -Anforderungen beschreiben eher Merkmale als Funktionen. "Das System muss in der Lage sein ...". Sie beschreiben einen "Seinszustand".
Die "Haben" -Anforderungen sind die Substantive, über die Sie gesprochen haben. "Das System soll ..." Sie liefern die Substantive für die funktionalen Anforderungssätze.
Auf hohem Niveau gibt es nur sehr wenige funktionale Anforderungen. Die meisten Anforderungen sind entweder Funktionsanforderungen, Leistungsanforderungen oder Anforderungen an die Zusammensetzung.
Alle Anforderungen auf hoher Ebene, die Kinder benötigen, sind per Definition nicht eindeutig. Wenn sie eindeutig wären, würden sie keine Kinder brauchen, um sie zu definieren. Darüber hinaus ist eine Anforderung nur dann eindeutig, wenn die Mehrheit der Personen in einer Anforderungsüberprüfung erklärt, dass dies der Fall ist. Das heißt, Mehrdeutigkeit ist subjektiv. Die nächstgelegene Definition für eine mir bekannte eindeutige FUNKTIONSANFORDERUNG finden Sie bei BarBaraBea.com auf der Seite "Eindeutige funktionale Anforderungen". Grundsätzlich heißt es, dass alle Substantive in einer funktionalen Anforderung aus den Systemeingaben über eine Kette eindeutiger funktionaler Anforderungen abgeleitet werden müssen und dass die Aussage der Berechnung in der Anforderung einen Algorithmus beschreiben muss. Die Definition von "Algorithmus" ist viel weniger subjektiv als die Definition von "eindeutiger Anforderung".
quelle
Nun, für Omelett würde ich die Anforderungen der ersten Version der zweiten vorziehen, einfach weil die zweite Version das Risiko birgt, zwei Eier, x Unzen Schinken usw. zu bekommen - nichts als das, weder gebraten noch Rührei.
Die zweite Version garantiert, dass ich das bekomme, was ich brauche, aber es ist auch etwas scheiße - nur weil der einzige Weg, um sicherzustellen, dass die Anforderungen erfüllt werden, darin besteht, in der Küche zu bleiben und jeden Schritt einer Mahlzeit genau zu beobachten.
Sie sehen, ich würde Anforderungen bevorzugen, die es mir irgendwie ermöglichen würden , das Ergebnis zu testen / zu verifizieren, ohne gezwungen zu sein, zu beobachten, wie Sie das Essen zubereiten.
Eine Möglichkeit, dies zu erreichen, besteht darin, Anforderungen als bestandenen Vergleich mit der Referenz anzugeben. Am Beispiel eines Omeletts würde ich mein eigenes "Referenz" -Omelett nach denselben Anweisungen wie Sie erstellen und dann Ihr Omelett vergleichen, um nahe genug daran zu sein.
Eine andere Möglichkeit wäre, Anforderungen anzugeben, damit diese das Ergebnis beschreiben. Für Omelett wäre das wie "4 Unzen Eier, Rührei und gebraten, etc ...". Ich habe mich hauptsächlich mit solchen Anforderungen befasst - ich denke, das ist der typischste Weg.
quelle
Ein Funktionsprogramm besteht aus Funktionen. Was sind Funktionen? Sie sind Methoden, die Aktionen ausführen. Was sind Aktionswörter? Verben.
Wenn Sie objektorientiert programmieren würden, würden Sie mit Substantiven arbeiten. Eigentlich würden Sie sowohl mit Substantiven als auch mit Verben arbeiten.
Funktionsstil:
Objektorientierter Stil:
Auf der Anforderungsebene bin ich mir nicht sicher, ob dies von Bedeutung ist, obwohl es sicherlich hilfreich wäre, wenn die Anforderungen in Form von Aktionen angegeben würden, da Funktionen das sind, was Sie schreiben werden.
quelle
Alle Anforderungen können im Wesentlichen auf eine Sammlung von Aussagen reduziert werden, die sich um die Verwendung von Verben drehen. Ja, Sie können ein paar Substantive und Adjektive einfügen, aber es sind die Verben, die beschreiben, wie sich ein System verhält und was der Kunde von der Software erwartet. Sogar ein Großteil der zustandsspezifischen Funktionen eines Programms kann als Verhalten betrachtet werden, wenn Sie den Zustand durch Getter- und Setter-Methoden darstellen.
Genau wie CFL_Jeff in seiner Antwort erwähnt , möchten Sie, dass Ihre Anforderungen beschreiben, was ein System tun wird, und nicht, wie es getan werden soll. Dies ist möglicherweise der Grund, warum ich die verhaltensgesteuerte Entwicklung so überzeugend finde , weil sie die Verwendung von Verben fördert, die Anforderungen beschreiben, und die Verwendung von Verben beim Schreiben von Komponententests, um Anforderungen als zu testende Verhaltensweisen zu beschreiben.
Betrachten Sie für einen Moment die folgenden Anforderungen und Szenariovorlagen:
As an {actor} I want to {do something} in order to {achieve an outcome}
Given {an initial context} When {something is done} Then {expect an outcome}
In BDD sind Features immer das Bit, das im Abschnitt "Ich möchte" der Vorlage beschrieben ist, und sie werden immer mit Verben geladen, die beschreiben, was das Feature tut. Beim Testen wird eine
Given-When-Then
Vorlage verwendet, um bestimmte Szenarien zu validieren, die sich auf das Feature beziehen, und der Abschnitt "Wann" der Vorlage wird immer durch die verwendeten Verben definiert, die sich in gewisser Weise auf die in der Feature-Spezifikation verwendeten Verben beziehen.Anhand Ihres Omelett-Beispiels ist es sehr sinnvoll, eine Reihe von Verhaltensweisen als Serie zu definieren. Sie haben eine Sammlung von Verhaltensweisen und Ergebnissen, und als Serie bilden sie einen Workflow. Wenn Sie stattdessen eine Liste von Zutaten definieren, beschreiben Sie die Architektur effektiv sehr locker, es bleiben jedoch viele Fragen offen. Was ist der Workflow? Wie sind die Zutaten zu verwenden? Ihnen fehlt im Grunde der "Kleber", der Ihre Entscheidungen darüber, wie Sie Ihr System zusammenbauen und wie sich Ihr System verhalten soll, leitet.
Indem Sie Anforderungen in Bezug auf Verhalten und Ergebnisse definieren, können Sie ein sehr klares Bild davon liefern, was die Software erreichen soll, ohne sich Gedanken darüber machen zu müssen, wie solche Ergebnisse in der Software konkret erzielt werden können.
quelle