Anforderungsmanagement im Produktlebenszyklus mit Redmine

In jedem Projekt stellt man sich der Herausforderung aufs Neue, Anforderungen in das fertige Produkt zu überführen. Um das erfolgreich zu schaffen, gibt es zahllose Vorgehensweisen und Möglichkeiten. Eine Lösung ist die Verwendung von Redmine, einer Issue-Tracking Applikation, die einfach auf die eigenen Bedürfnisse angepasst werden kann.

Aufgaben des Anforderungsmanagements

Je nachdem, wie ein Projekt strukturiert ist und auf welches Zusammenarbeitsmodell man sich mit dem Kunden geeinigt hat, sollte man das Anforderungsmanagement an die Gegebenheiten anpassen. Was in einem Projekt gut funktioniert hat, kann im nächsten schon nur noch weniger gut funktionieren. Das kann unter anderem an Unterschieden in der Verfügbarkeit des Kunden, dem Vorgehensmodell oder an den Vorkenntnissen liegen. Um nicht für jedes Projekt das Rad neu erfinden zu müssen, ist es wichtig ein anpassungsfähiges Anforderungsmanagement zu haben. Daher soll im Folgenden ein mögliches Anforderungsmanagement mit der Webapplikation Redmine vorgestellt werden. Der Ansatz kann für unterschiedlichste Projekte verwendet werden und bietet den Vorteil, dass das Anforderungsmanagement mit den anderen Phasen der Produktentwicklung verknüpft werden kann.

Zunächst aber noch ein paar allgemeine Worte zum Thema Anforderungsmanagement: Eine Anforderung spiegelt Wünsche und Erwartungen von Stakeholdern wider, die in das Produkt implementiert werden sollen. Es muss also sichergestellt werden, dass alle Anforderungen entsprechend implementiert und auch getestet werden. Die schönste und ausführlichste Beschreibung einer Anforderung ist wertlos, wenn am Ende nicht überprüft wird, ob das Produkt sie auch erfüllt. Das bedeutet, dass Anforderungsmanagement keine eigenständige Disziplin ist, es hat Wechselwirkungen mit dem gesamten Produktentwicklungsprozess.

Damit Anforderungen alle benötigten Informationen für die Implementierung und zum Testen enthalten, müssen sie Antworten auf diese Fragen enthalten:

  • Was soll die Funktion können? – Eine möglichst ausführliche und „lebhafte“ Beschreibung
  • Wie gut soll die Applikation etwas können? – Messbare Kriterien
  • Wie kann die Funktion überprüft werden? – Akzeptanzkriterien und Testfälle
  • Wer ist für die Funktion verantwortlich? – Ansprechpartner
  • Wie wichtig ist die Funktion? – Priorisierung

Eine ausführlichere Beschreibung wie Anforderungen aufgenommen werden können und welche Informationen benötigt werden, findest du in unserem Partner Blog: How to keep track of requirements

Im Laufe eines Projekts durchläuft das Anforderungsmanagement immer mehrere Phasen. Zunächst werden die initialen Anforderungen aufgenommen. Anschließend wird mit der Entwicklung begonnen, wobei regelmäßig neue Erkenntnisse gewonnen werden. Änderungswünsche werden aufgenommen und bewertet. Dabei wird entschieden, ob Anforderungen unverzüglich angepasst werden oder erst in einer späteren Version Berücksichtigung finden. Zum Ende der Entwicklung muss mit den Testfällen und Akzeptanzkriterien überprüft werden, ob das entwickelte Produkt die beschriebenen Anforderungen erfüllt.

Fällt z.B. erst im abschließenden Test auf, dass eine Anforderung nicht korrekt implementiert wurde, kann schnell erkannt werden, welche ursprüngliche Anforderung und damit auch die betroffenen Features und Tasks angepasst werden müssen.

Das Anforderungsmanagement ist also keine einmalige Aktivität zum Projektstart, sondern ein kontinuierlicher Vorgang welcher alle Phasen des Projekts begleitet. Daher müssen Wege gefunden werden die unterschiedlichen Phasen miteinander zu verknüpfen. Wir benutzen dafür das zuvor erwähnte Redmine.

Anforderungen aufnehmen

Der erste Schritt, um Anforderungen in Redmine zu verwalten, ist das Anlegen eines „Trackers“ für Anforderungen. Dies dient der Unterscheidung von anderen Tickets, wie z.B. Features oder Bugs.
Ist dieser Tracker angelegt, können die bekannten Anforderungen angelegt werden. Durch die Vergabe einer Priorität für die Anforderungen und ggf. der Zuordnung zu einer Zielversion kann die Produktplanung durchgeführt werden. In einem agilen Projekt wäre das das initiale Product Backlog.

In der Abbildung sind einige Anforderungen an eine fiktive Applikation zu sehen. Zum aktuellen Stand sollen alle Anforderungen mit sehr hoher, oder hoher Priorität in der Version 0.1 implementiert werden. Alle mit normaler Priorität in Version 0.2 und die mit niedriger bzw. sehr niedriger in Version 0.3. Natürlich ist die Priorisierung nur eine Momentaufnahme. Immer wenn Veränderungen im Projekt auftreten, muss geprüft werden, ob es Auswirkungen auf die Planungen gibt.

Zuordnung zur Produktentwicklung und -planung

Um Aufgaben aus Anforderungen abzuleiten, bietet es sich an Anforderungen in Features zu unterteilen. Ein Feature kann z.B. eine einzelne Funktion oder ein Prozessschritt einer Anforderung sein. In agilen Projekten würde man die Features als User Stories bezeichnen und diese in Sprints einplanen.

Die Anforderung, dass sich Nutzer an dem Produkt anmelden sollen, kann beispielsweise in 4 Features aufgeteilt werden:

  1. User müssen sich registrieren können –> Registrierung von neuen Usern
  2. Anschließend muss es eine Login Maske geben –> Login
  3. Falls User ihr Passwort vergessen haben, müssen sie irgendwie ein neues beantragen können –> Passwort vergessen
  4. Um die bei der Registrierung angegebene E-Mail Adresse zu verifizieren soll eine Bestätigungsmail verschickt werden –> Bestätigungsmail nach Registrierung

Dem Kunden sind die beiden letzten Punkte nicht so wichtig, da es Zusatzfunktionen sind, die nicht sofort vorhanden sein müssen. Daher wurden sie mit einer niedrigen Priorität versehen.

Durch die Zuordnung von Vorgänger – Nachfolger Beziehungen zwischen Features und durch deren Priorisierung kann die Implementierungsreihenfolge geplant werden.
Wenn für die Features in traditionellen Projekten Bearbeitungszeiträume eingeplant werden, kann eine Projektplanung in dem Gantt-Diagramm aus Redmine visualisiert werden.

Für die Produktentwicklung werden Features anschließend in Tasks heruntergebrochen. Über Subtasks oder das Feld „Zugehörige Tickets“ kann in Redmine die Verbindung zwischen den Tasks zu den übergeordneten Features hergestellt werden.

Neben der Verwaltung von Anforderungen, Umsetzungstasks und Bugs kann Redmine auch für Testmanagement verwendet werden, z.B. durch das Redcase Plugin. Dadurch hat man die Möglichkeit Anforderungen direkt mit Testfällen zu verknüpfen. Man kann also den gesamten Softwareentwicklungsprozess, vom Interview mit Stakeholdern bis hin zum abschließenden Test, in einem Tool abbilden.

Bewertung

Zusammenfassend lässt sich sagen, dass Anforderungsmanagement mit Redmine eine gute Option ist, da man auch andere Phasen des Produktentwicklungsprozesses damit managen kann und somit alle Informationen in einer Applikation vorhanden sein können. Dadurch können Wechselwirkungen zwischen den Phasen einfach und schnell nachvollzogen werden. Darüber hinaus bietet Redmine vielfältige und hilfreiche Filtermöglichkeiten, so dass Nutzer nicht durch eine Informationsflut verwirrt werden. Je nach Rolle im Team können die Informationen auf Anforderungen, Features, Tasks oder Test Cases beschränkt werden.

Die Vereinigung aller Phasen in einer Applikation hat jedoch auch Nachteile, die auf keinen Fall verschwiegen werden sollen. Bei Redmine handelt es sich um eine Anwendung zum Issue-Tracking, es ist keine professionelle Test- oder Projektmanagement-Lösung oder ein Dokumentenmanagement-System. So muss man sich bewusst sein, dass die Formatierungsmöglichkeiten für die Anforderungsbeschreibung etwas limitiert sind und dass die Projektplanung und deren Darstellung im Gantt-Diagramm nur eingeschränkt möglich ist.
Viele Kunden verlangen auch ein Textdokument als Ergebnis einer Anforderungsanalyse. Um eine doppelte Dokumentation zu vermeiden, können die Anforderungs-Tickets Verweise auf Abschnitte im Ergebnisdokument enthalten.

Fazit

Für ein erfolgreiches Anforderungsmanagement ist es wichtig zu verinnerlichen, dass es sich dabei nicht nur um eine Phase zu Beginn eines jeden Projekts handelt, die möglichst schnell abgeschlossen werden muss. Es ist die Schnittstelle zum Kunden, der seine Erwartungen und Wünsche im späteren Produkt wiederfinden möchte. Daher ist das Anforderungsmanagement mit allen Phasen der Produktentwicklung verbunden.

Grundsätzlich bietet Redmine alle notwendigen Funktionen, um Anforderungen zu dokumentieren. Wenn man sich dafür entscheidet dies zu tun, hat man den Vorteil Informationen aus allen Phasen des Produktentstehungsprozesses in einer Applikation zu haben, wodurch Abhängigkeiten deutlich werden und Auswirkungen von Änderungen besser bewertet werden können.

Diesen Beitrag teilen

Daniel Huchthausen
Consultant
Wenn er nicht gerade die Wildnis erkundet, beschäftigt sich Daniel mit Themen wie Qualitätssicherung, Testen oder PM-Methoden.