So ziemlich jedes System lässt sich durch die globale Anforderung „tu doch einer was“ beschreiben. Als anderes Extrem ist es auch problemlos möglich, 80% der Entwicklungs-Team-Kapazität mit der Dokumentation von Anforderungen zu binden. REQms bildet hier einen funktionierenden Trade Off. Die Ziele sind:
Dokumentierte Anforderungen erleichtern die Übersicht über ein System. Damit wird es einfacher,
Sobald Systeme ihre Lebensberechtigung über den ersten Entwurf hinaus bewiesen haben, wird es wichtig auch über die Vermittlung des erarbeiteten Wissens nachzudenken. Durch die gemeinsame Sprache und durch die vermittelte Übersicht sind aufgeschriebene Anforderungen für die Einarbeitung von neuen Projekt-Beteiligten der ideale Startpunkt.
Auch im kooperativen Umfeld haben Verträge einen Mehrwert als Erinnerungshilfen. Aufgeschriebene Anforderungen sind in dieser Beziehung einem Vertrag sehr ähnlich – denn sie halten fest, was vereinbart war. Damit lässt sich sicher die ein oder andere Diskussion versachlichen und Frust vermeiden. Ein zweiter wichtiger Aspekt ist, dass mit notiert werden kann,
TestFirst Anhänger suchen immer nach Ankerpunkten für Abnahmetests. Abnahmetests helfen hier schon vor jeglicher Realisierung, wichtige Anforderungsdetails zu konkretisieren. Die Forderungen nach Abnahmetests als integralem Bestandteil helfen dabei,
Schon längst verstanden geglaubte Zusammenhänge sind plötzlich gar nicht mehr so stringent logisch aufgebaut, sobald man mit der Aufgabe konfrontiert ist, diese einem dritten zu erklären. In solchen Situationen verändert sich regelmäßig das Bild im Kopf. Ein ähnlicher Effekt tritt auch beim Aufschreiben von Anforderungen auf. Ein Teil des Widerwillens gegen die Dokumentation von Anforderungen liegt sicher in dieser Denkarbeit begründet – und zeigt gleichzeitig auch die Notwendigkeit.
Requirements sind das zentrale Element im System Scope. Fast alle Elemente referenzieren diese einzelnen Anforderungen. Das möglichst so, dass die beschriebenen Arten von Änderungen jeweils nur an einer Stelle eine Veränderung der Dokumentation verursachen. Damit die Gratwanderung zur Übersicht über das System gelingt, werden Anforderungen auf einer möglichst hohen Abstraktionsebene beschrieben.
Anforderungen haben die folgenden Eigenschaften:
Quelle von nichtfunktionalen Anforderungen sind oftmals technische Rahmenbedingungen (Speichergröße, Netzwerkbandbreite, o.ä.) oder Performance-Vorgaben. Eine bewährte Notation für nichtfunktionale Requirements ist die „Goal oriented Requirements Language Notation“ (GRL). GRL erlaubt auch bei nicht funktionalen Anforderungen das „Warum“ zu beleuchten. Das ist in meinen Augen ganz hilfreich – denn die Umstände zu z.B. „Requests müssen in 50ms beantwortet sein“ können sich durchaus ändern. Dann ist es immer hilfreich, das Warum zu kennen. Wikipedia: http://en.wikipedia.org/wiki/Goal-orientedRequirementsLanguage
UseCases sind die klassischen Vertreter für funktionale Anforderungen. Quellen für funktionale Anforderungen sind die gewünschten fachlichen Funktionen oder werden aus gesetzlichen Rahmenbedingungen abgeleitet (z.B. Datenschutz). UseCases sind damit eng mit dem budgettragenden Stakeholder verbunden.
Ein UseCase beschreibt, wie das System einem Akteur erlaubt ein Ziel zu erreichen.
Wer UseCases kennt, wird bemerken, dass die Zielebene fehlt. In unserem Fall reicht die Überblicksebene in den allermeisten Fällen aus. Wikipedia: http://en.wikipedia.org/wiki/Usecase
Ein weitere hilfreiche Notation für funktionale Anforderungen ist die sogenannte Aspect-oriented User Requirements Notation. Mit dieser Notation lassen sich querschnittliche funktionale Anforderungen gut beschreiben. Ein typisches Beispiel für solche querschnittlichen Anforderungen sind z.B. Rechte von Rollen oder Fehlerprotokollierung. Weiterführende Literatur finden Sie z.B. unter
SystemInterfaces oder System-Schnittstellen leiten sich meist aus funktionalen Anforderungen ab; Schnittstellen können ihren Ursprung aber auch in verwendeten Fremdsystemen haben.
Elemente einer Schnittstellenbeschreibung sind:
Im Acctepance Test im Sinne eines Abnahmetests wird beschrieben, was erfüllt sein muss, damit die Anforderung als umgesetzt gewertet wird. Während Anforderungen nach Möglichkeit auf einer hohen Abstraktionsebene formuliert sind, können in Tests wichtige Details beschrieben werden. Beispiele zur Testbeschreibung finden sich im Anhang unter 5.4 Der zugehörige Akzeptanztest.
Ansichten, dienen dazu, Anforderungen zu strukturieren. Ansichten entsprechen gedanklich ausdruckbaren Dokumenten, die für die entsprechende Zielgruppe zusammengestellt wurden. Um nicht in der DRY-Falle zu landen, werden hier Anforderungen ausschließlich referenziert. Um im ausdruckbaren Dokument jetzt nicht nur Links stehen zu haben, ist ein Tooling sehr hilfreich, das auch Inhalte von referenzierten Anforderungen anzeigen kann (siehe Anhang 5.6 Eine Ansicht). In einer weiteren Ausbaustufe ist die Möglichkeit zur zusätzlichen Einschränkung auf weitere Strukturelement ausgesprochen nützlich (Titel, Stakeholder, ...).
Die Domain Architecture oder fachliche Architektur beschreibt die Unterteilung des fachlichen Problems. Neue Erkenntnisse, die während Analyse, ausprobieren oder Umsetzung entstehen, führen mit Sicherheit dazu, dass sich die Unterteilung und Strukturierung in der fachlichen Architektur verändert. Damit sich diese Veränderungen nicht so massiv auf schon bestehende Anforderungen auswirken, wird die semantische Verbindung zwischen Anforderungen und der fachlichen Architektur durch Requirements Views realisiert. Die in der fachlichen Architektur verwendeten Elemente wie Aggregate, Entitäten, Repositories, usw. sind im Domain Driven Design beschrieben.
Workpackages oder Arbeitspaket sind die zentralen Element im ProjectScope und referenzieren zentral auf die umzusetzenden Anforderungen im SystemScope. Auf der einen Seite stellen Arbeitspaket die Verbindung zu den referenzierten Anforderungen dar, auf der anderen Seite bieten Arbeitspakete den richtigen Punkt, um die Arbeit im Projekt zu organisieren. Alle weiteren Elemente im Projekt-Scope (Projektplan, Statusberichte, Controlling und Releasebeschreibung) referenzieren ihrerseits auf Arbeitspakete. Wichtige Bereiche im Arbeitspaket sind:
Im Kontext von Umsetzungsprojekten sind zwei Testarten relevant, die Abnahme-Tests und zusätzlich noch Entwickler-Tests.
ScreenFlows sind wesentliche Elemente, um die Benutzerführung zu gestalten. Nach einer Umsetzung können Screenflows in Form von Benutzerhandbuch-Einträgen weiterhin fortbestehen.
In REQms sind die Anforderungen versioniert … im Beispiel hier ist die Version001 stabil und in der Version002 kann weiter spezifiziert werden.
Um eine neue Version zu erstellen:
Per URL sind alle Anforderungen versioniert referenzierbar.
Hier ein Beispiel für einen UseCase, unten stehen die Abnahmetests.
REQms bietet auch die Möglichkeit zur Volltext-Suche:
Hier sieht man eine Ansicht mit eingeklappten Kapiteln:
Und hier ist das Kapitel „Community Suche“ aufgeklappt … alle zugeordneten Anforderungen stehen untereinander.
Der Edit-Mode zeigt, die Anforderungen sind hier nur referenziert.
Alle Anforderungen sind TestSuites im Sinne von REQms. Damit lassen sich die Anforderungen auf beliebigen Ebenen in REQms Manier gemeinsam testen. Eine generische Fixture präsentiert die Testanweisungen dem Tester.
Als Ergebnis bekommt man eine schöne Test-Zusammenfassung für den einzelnen Test…
Und für alle durchgeführten Tests und Retests ...
Kontaktieren Sie uns unter buero@jerger.org.