Wie beschriften Sie Softwareanforderungen?

8

Was ist eine gute Strategie, um Softwareanforderungen in einem SRS zu kennzeichnen?

In der Regel wird die Gliederungsnummerierung für Überschriften verwendet. Diese werden jedoch neu nummeriert, wenn eine neue Überschrift in das Dokument eingefügt wird. Für mich scheint es eine gute Idee zu sein, für jede Softwareanforderung eine stabilere Bezeichnung anzustreben. Dies sollte es einfacher machen, auf eine bestimmte Anforderung zu verweisen, selbst angesichts eines aktualisierten SRS.

Was sind deine Erfahrungen damit?

Oskar Berggren
quelle
1
Warum Abstimmungen? Das Anforderungsmanagement kann nicht trivial sein. Gute Softwareentwicklungspraktiken fördern gute Software.
Throwback1986

Antworten:

7

Eine Strategie:

  1. Betrachten Sie die SRS-ID nur als eine Nummer und implizieren Sie keine starke Vorstellung von aufeinanderfolgender Reihenfolge (Die Sozialversicherungsnummer ist ein vernünftiges Beispiel.)
  2. Zahlen Sie keine Zahlen. Wenn eine ID in einer Sequenz gelöscht wird, markieren Sie sie als "Gelöscht", "Veraltet" usw. Ich bevorzuge es, den Anforderungstext im gelöschten Element zu behalten, damit ich eine laufende Aufzeichnung der Anforderungsentwicklung habe. Wenn Sie sich dazu entscheiden, markieren Sie den gelöschten Text offensichtlich, z. B. eine durchgestrichene Schriftart.
  3. # 2 impliziert, dass neue Anforderungserweiterungen niemals "an Ort und Stelle" erfolgen werden; Vielmehr werden sie immer an das Dokument angehängt.
  4. Diese Strategie kann schwierig zu organisieren oder hierarchisch zu gruppieren sein, wenn sich Änderungen ansammeln. Kennzeichnen Sie daher jede SRS-ID mit einer aussagekräftigen Bezeichnung für die Suche, z. B. [GUI], [DB] usw.

Es gibt andere Strategien, z. B. die Verwendung gepunkteter Dezimalstellen für Clusteranforderungen:

  • 1.0 GUI
  • 2.0 DB
  • 3.0 Verarbeitung

Wie Sie vielleicht erraten haben, sollten die jeweiligen Anforderungen unter der Nummer der obersten Ebene entsprechend geordnet werden: 1.1, 1.2 ... für GUI, 2.1, 2.3, 2.4 für DB usw. Beachten Sie, dass für diese Strategie eine kontrollierte Methode erforderlich ist Verwalten von Löschungen und Ergänzungen.

Das Wichtigste, was in einem Anforderungsdokument durchgesetzt werden muss: Sobald eine ID für eine Anforderung verwendet wurde, kann sie nicht mehr für andere Anforderungen verwendet werden. Mit anderen Worten, wenn SRS 1234 verwendet und dann gelöscht wurde, kann es später nicht wieder auftauchen. (Wenn Sie dies zulassen, wird die Rückverfolgbarkeit der Anforderungen im Verlauf eines sich entwickelnden Projekts absolut beeinträchtigt.)

Beachten Sie, dass praktisch jede SRS-Organisation / -Struktur Mängel aufweist. Wählen Sie diejenige aus, die zu Ihrer Entwicklungsumgebung und Ihren Anwendungsanforderungen passt. (Zum Beispiel funktionieren die oben genannten Strategien in stark kontrollierten Entwicklungsumgebungen, wie sie von der FDA oder anderen staatlichen Stellen überwacht werden, recht gut.)

Erwägen Sie schließlich die Verwendung eines Anforderungsmanagement-Tools. Es gibt gute da draußen (Open Source für $$$$$), die das alles für Sie erledigen.

Throwback1986
quelle
Anforderungen, die über den Technologie-Stack-Bereich (GUI, DB, Verarbeitung) organisiert sind, sind keine Anforderungen, sondern Aufgaben. Wenn überhaupt, sollten die technischen Anforderungen auf einen Bereich beschränkt sein, in dem technische Einschränkungen erläutert werden, z. B. Muss unter Windows 7 und höher ausgeführt werden. Das Abgrenzen von Anforderungen über Tech Stack ist ein schlechter Geruch.
Michael Brown
Ziel war es, ein Beispiel für eine logische Organisation von Anforderungen auf hoher Ebene (z. B. Benutzeroberfläche im Vergleich zu Speicher usw.) bereitzustellen. Es gibt keine technologischen "Stapel" oder Einschränkungen, die in der Post angegeben oder impliziert sind.
Throwback1986
1

Das beste konzeptionelle Denken ist, dass Anforderungen unterschiedliche Elemente sind, die auf verschiedene Weise miteinander in Beziehung stehen und daher in einer Datenbank gespeichert werden sollten. Die Verwendung eines Textverarbeitungsprogramms zum Speichern von Anforderungen ist der falsche Weg und führt zu vielen Problemen, da dies das konzeptionelle Denken antreibt, dass "Anforderungen ein Dokument sind" - daher diese Frage. Wenn Sie ein Textverarbeitungsprogramm verwenden müssen, halten Sie jede Anforderung getrennt, genau wie wenn Sie Word zum Speichern von Kontakten verwenden würden.

Daher führt die Verwendung der Gliederungsnummerierung zur Aufrechterhaltung der Anforderungen zu Problemen. Stellen Sie sich vor, Sie versuchen, Querverweise zu Test- und SRS- und Kundenanforderungen zu erstellen, wenn Sie die Zahlen ändern? Stellen Sie sich vor, Sie diskutieren "Anforderung 10.2.3.1" und stellen fest, dass es sich bei dem gestrigen Dokument, das Sie dem Kunden gesendet haben, um "10.2.2.1" handelt.

Anforderungen sind ein Etikett und sollten wenig Bedeutung vermitteln. Möglicherweise haben Sie ein oder mehrere kurze Präfixe mit 2 bis 5 Buchstaben, um den Umfang oder die Einheit zu identifizieren. Bis Sie jedoch mehrere Tausend haben, sollte jede implizite Bedeutung begrenzt sein. zB in einem Auto haben Sie möglicherweise EM-FUEL-1234 (Motormanagement, Kraftstoffsteuerungssystem, Anforderung 1234).

Anforderungen sollten projektübergreifend wiederverwendet werden können.

Die Anforderungen müssen über den Umfang und die Lebensdauer des Projekts hinweg eindeutig sein. Als Richtlinie ist das Ändern einer Anforderung zur Klärung dieselbe Nummer, aber um sie erheblich zu ändern, löschen Sie die alte und ersetzen Sie sie. Die Verwendung eines Versionsschemas (Append_1, _2 usw.) kann hilfreich sein.

Wenn Sie diese Datenbank mit Word speichern müssen, können Sie mithilfe von Start- und End-Token die Anforderungen identifizieren. Wenn Sie einen eindeutigen Schriftstil für die Anforderungsnummerierung verwenden, können Sie diese mithilfe von Makros leicht hervorheben, suchen und extrahieren (möglicherweise in eine Datenbank). Beispiel könnte sein

#Req 1234 #

Bla bla bla bla

# ReqEnd #

#Req 1234a #

Bla bla bla bla und noch mehr bla

# ReqEnd #

mattnz
quelle