# Anforderungsmanagement

Anforderungsmanagement (AM; englisch requirements management, RM) umfasst Maßnahmen zur Steuerung, Kontrolle und Verwaltung von Anforderungen: Risikomanagement, Änderungsmanagement und Umsetzungsmanagement. Es dient der effizienten und fehlerarmen Entwicklung komplizierter Systeme, an denen arbeitsteilig gearbeitet wird. Denn Probleme mit Anforderungen resultieren zumeist aus mangelndem Management ebendieser. Alleine das Aufstellen von Anforderungen reicht nicht aus, sondern für die Planung und Realisierung eines Produktes oder Systems ist ebenso der Prozess des Anforderungsmanagements notwendig.
Anforderungsmanagement ist ein Teilgebiet des Requirements Engineerings (RE) und der Business-Analyse. Deren weitere Disziplinen sind z. B. Anforderungsdefinition, Anforderungsanalyse, Anforderungsdokumentation, Anforderungsvalidierung.

## Ziele

Das Ziel des Anforderungsmanagements ist es, ein gemeinsames Verständnis über ein zu entwickelndes System zwischen Auftragnehmer und Auftraggeber zu erreichen. Dieses gemeinsame Verständnis kann durch die Einführung und Umsetzung von Anforderungsmanagementmethoden (u. a. Scoping, Anforderungsanalyse, Anforderungsspezifikation, Anforderungsmodellierung, Anforderungsreviews) erreicht werden. Durch den Einsatz dieser Methoden kann die Aktualität und Qualität der Anforderungsdokumentation gesteigert werden. Qualitätskriterien einer Anforderungsdokumentation sind u. a. Verständlichkeit, Eindeutigkeit, Nachweisbarkeit (Rückverfolgbarkeit), Widerspruchsfreiheit, Vollständigkeit, Testbarkeit. Zur halbautomatischen Prüfung einiger Qualitätskriterien kann, in Anlehnung an Code-Smells, in der Anforderungsdokumentation nach sogenannten Requirements Smells gesucht werden, die potenzielle Probleme im Text aufdecken. Zugleich dienen die resultierenden Dokumente häufig für die Erstellung von Testfällen und als vertragliche Basis für die Umsetzung.

## Normen

Anforderungsmanagement gehört zu den Prozessen in den Software- und System-Reifegrad-Modellen CMMI und ISO/IEC 15504 (SPICE) sowie im Standard ISO/IEC 12207. Anforderungen und Charakteristiken für die Erstellung von Anforderungen sind in der ISO/IEC/IEEE 29148 beschrieben. Weiterhin wird auf RFC 2119 referenziert.
Ein von der Deutschen Automobilindustrie heraus entwickelter Standard zum einheitlichen Austausch von Anforderungen ist das Requirements Interchange Format (ReqIF™, ehemals RIF). ReqIF wird durch ein XML-Schema definiert und ist ein Format und Datenmodell, das Strukturen für Anforderungen, deren Attribute, Typen, Zugriffsrechte, Relationen (Links) enthält. Der Standard wird durch Prostep ivip von Projektpartnern stets weiterentwickelt (Stand 2022).

## Sprache

Ziel einer Anforderungsspezifikation (u. a. Lastenheft, Pflichtenheft, Fachkonzept) ist es, die Anforderungen so zu formulieren, dass zwischen dem Auftraggeber und Auftragnehmer ein gemeinsames Verständnis über das zu entwickelnde System geschaffen wird. Zur Darstellung wird natürliche Sprache verwendet oder eine formalisierte natürliche Sprache mit eingeschränktem Vokabular und festen Satzkonstruktionen, z. B. Satz-Schablonen oder Requirements Templates. Dabei sollten Regeln eingehalten werden, um die Qualität der Anforderungen zu verbessern. Empfehlenswert ist beispielsweise, kurze Sätze zu formulieren, ungenaue Adjektive und Adverbien nicht zu verwenden (sogenannte „schwache Wörter“, wie z. B. schneller, schöner, automatisch, circa), sowie Passiv (z. B. „Es kann berechnet werden“) zu vermeiden, sondern stattdessen das handelnde System zu nennen, und Konjunktiv (z. B. „müsste“ oder „sollte“) zu vermeiden.
Anforderungen sollten nicht nur Aussagen über gewünschte Eigenschaften eines Produkts oder Systems treffen, sondern auch Kriterien beinhalten, wie diese Eigenschaften überprüft werden können (Akzeptanzkriterien). Diese Kriterien dienen der Qualität der Anforderungen selbst, da sie zu einer inhaltlichen Überprüfung der Anforderung anregen.
Zudem existieren mehrere grafische Notationen zur Modellierung und Dokumentation von Anforderungen und Zielen. Dabei handelt es sich u. a. um die künstlichen Sprachen:
* Unified Modeling Language (UML)
* Systems Modeling Language (SysML) – Anforderungsdiagramme
* User Requirements Notation (URN)
* Message Sequence Charts (MSC)
* iStar (i*)
* KAOS

## Anforderungsmanagement-Software

Um ein Anforderungsmanagement besser zu strukturieren, Redundanzen zu reduzieren sowie Versions-/Konfigurationsmanagement und Rückverfolgbarkeit (engl. Requirements Traceability) zu ermöglichen, wird spezialisierte Software eingesetzt. Diese basiert in aller Regel auf einer Datenbank, in der die Einzel-Requirements gespeichert und im Zeitverlauf weiterverfolgt werden. Zu den Requirements wird der Start ihrer Bearbeitung, die Erreichung von Meilensteinen und der (erfolgreiche) Abschluss der Arbeit vermerkt. Die Software ermöglicht es meist auch Anforderungen in Beziehung zu setzen. So können zum Beispiel Systemanforderungen auf Kundenanforderungen zurückgeführt werden. Ist diese Beziehung nicht ersichtlich, liegt möglicherweise ein Overengineering vor. Genauso können Tests mit den Anforderungen in Beziehung gesetzt werden.
Werden Standard-Programme zur Textverarbeitung oder Tabellenkalkulation anstelle spezialisierter Software eingesetzt, können die soeben beschriebenen Verfolgbarkeit und Beziehungen häufig nicht oder nur aufwändig gepflegt werden.