Das Eruieren, Dokumentieren und empfängergerechte Kommunizieren von Anforderungen hoher Qualität sind die Hauptziele des Requirements Engineerings.
Dies hört sich einfach an, ist es aber nicht. In der Praxis zeigt sich, dass das Requirements Engineering eine der kompliziertesten Disziplinen in der Softwareentwicklung ist.
Der Grund hierfür ist die Vielzahl der Faktoren, welche in dieser Disziplin zusammenwirken. Der Requirements Engineer ist das Bindeglied zwischen Kunde (Fachabteilung) und IT-Welt. Er muss den Spagat vollbringen, mit beiden Seiten verständlich zu Kommunizieren und gleichzeitig durch ein ingenieursmässiges Vorgehen sicherstellen, dass die Anforderungen vollständig, richtig und widerspruchsfrei sind.
Interessenkonflikte
Auf der Lieferantenseite steht er häufig einer Vielzahl von Stakeholdern gegenüber, die ganz unterschiedliche, im schlimmsten Fall widersprüchliche, Anforderungen stellen. Inhaltliche Konflikte müssen erkannt und beseitigt werden.
Auf der Empfängerseite der Anforderungsdokumentation stehen Architekten, Entwickler und Tester, von denen jeder eine aus seiner Sicht technisch möglichst gute Dokumentation erhalten möchte.
Skills
Dies kann nur geleistet werden, wenn der Requirements Engineer über breit aufgestellte Skills verfügt. Er muss auf der menschlichen Ebene die Kommunikation mit allen Beteiligten sicherstellen können und zugleich fachlich tief genug in die behandelten Themen einsteigen können, um die Inhalte zu verstehen und überprüfen zu können. Ferner muss er technisch und in der Methodik des Requirements Engineering sattelfest sein, um die Anforderungen für alle Beteiligten ausreichend genau darstellen zu können.
Das Requirements Engineering verdient in Projekten besondere Aufmerksamkeit, da es am Anfang des Entwicklungsprozesses steht und dadurch alle nachfolgenden Disziplinen beeinflusst. Fehler in den Anforderungen ziehen hohe Kosten nach sich und können Projekte insgesamt gefährden. Dies zeigt u.A. der CHAOS-Report der Standish Group, welcher seit mehr als zwei Jahrzehnten Faktoren für Erfolg und Misserfolg in IT-Projekten misst. “Klare Anforderungen” werden seit jeher unter den Top-Drei Gründen für den Projekterfolg gennant, “häufige Anforderungsänderungen” als ein Grund für den Misserfolg.
Was macht ein gutes Reqirements Engineering aus?
Elemente, die ein funktionierendes Requirements Engineering ausmachen sind unter anderem:
- Es wird aktives Requirements Management betrieben.
Die Anforderungen ändern sich in plan- und nachvollziehbarer Weise. - Es wird nach einer klar definierte Methodik vorgegangen, die zum Projekt pass.
Die Methodik definiert zum Beispiel, welche Requirements Typen genutzt werden, wie ihre Hierarchie aussieht und welche Formalismen zum Einsatz kommen (Goals, Features User Stories, Use Cases).
Ferner legt sie fest, wann und in welcher Form die Ergebnisse des Requirements Engineerings vorliegen. - Die richtigen Skills sind vorhanden
Erfahrene Engineers sind verfügbar, eine IREB oder ähnlich geartete Ausbildung ist Voraussetzung. - Agiles Vorgehen
Kleinere Arbeitspakete erhöhen die Verständlichkeit. - Tooluntersützung
Die geschilderte Komplexität lässt sich nur mit einem geeigneten Tooling managen.