Was ist Anforderungs-Engineering?
Große Hardware- oder Softwaresysteme wie ein Raumfahrzeug haben komplexe Anforderungen. Anforderungen sind eine Spezifikation dessen, was erstellt werden soll, wie sich das System verhalten soll oder Einschränkungen für den Prozess der Erstellung des Systems. Anforderungs-Engineering ist die Anwendung bewährter Verfahren, um die Anforderungen zu verstehen, bevor ein System erstellt wird. Dies wird wichtig, da die Stakeholder des Systems selbst nicht über ihre Bedürfnisse informiert sind und unterschiedliche Bedürfnisse haben.
Ein komplexes System kann viele Interessengruppen haben, wie z. B. die Personen, die das System in Betrieb nehmen, Benutzer, die einen oder mehrere Aspekte des Systems nutzen, und Personen, die vom System profitieren. Es ist auch möglich, dass Stakeholder Mitglieder der Öffentlichkeit sind, die von bestimmten Besonderheiten des Systems betroffen sind. Interessengruppen haben ihre eigenen besonderen Bedürfnisse. Andererseits können Personen, die das System entwickeln, technisch in der Lage sein, die Sichtweise der Stakeholder jedoch möglicherweise nicht vollständig zu verstehen. Das Requirements Engineering ist die wesentliche Fähigkeit, die diese Seiten verbindet.
Formal ist die Requirements Engineering-Aktivität in Anforderungsentwicklung und Anforderungsmanagement unterteilt. Die Anforderungsentwicklung besteht aus der Ermittlung, Analyse, Spezifikation und Verifizierung. Das Anforderungsmanagement ist die Steuerung des gesamten Anforderungsprozesses, insbesondere bei Änderungen der Anforderungen. Im Gegensatz dazu bezeichnen einige Praktiker die gesamte Aktivität als Anforderungsanalyse.
Die Einholung von Anforderungen von Stakeholdern wird notwendig, da Stakeholder ihre Bedürfnisse häufig nicht vollständig spezifizieren und die Auswirkungen des neuen Systems nicht verstehen. Die Interessengruppen dürfen sich nicht öffnen, da sie die Auswirkungen auf ihre derzeitigen Arbeitsplätze befürchten könnten. Elicitation ist daher ein vorsichtiger und möglicherweise langer Prozess, in dem Empathie und subtile Psychologie erforderlich sind. Man muss darauf achten, dass kulturelle Unterschiede zwischen verschiedenen Stakeholdern sowie den Entwicklern überbrückt werden.
Verschiedene Techniken werden verwendet, um Anforderungen zu ermitteln. Anforderungen konnten durch Einzelinterviews, Gruppentreffen und Beobachtung der Menschen bei ihren Aufgaben ermittelt werden. Zu den Techniken, die Anforderungen hervorrufen können, gehören Fokusgruppen, das Erstellen priorisierter Listen, das Erstellen von Prototypen und der Vergleich mit anderen in Betrieb befindlichen Systemen. Die zu ermittelnden Anforderungen umfassen die Geschäftsanforderungen des Systems, die Geschäftsprozesse der Benutzer bei der Verwendung des Systems und die Funktionsmerkmale des Systems. Darüber hinaus müssen die nicht funktionalen Anforderungen wie Reaktionszeit, Systemverfügbarkeit und Benutzerfreundlichkeit ermittelt werden.
Der Analyseschritt im Anforderungs-Engineering bildet Anforderungen auf niedriger Ebene, die den ursprünglichen Anforderungen auf hoher Ebene entsprechen. Dazu gehört die Erstellung konzeptioneller Modelle und Prototypen, um die Vollständigkeit der Anforderungen zu überprüfen. Konflikte in Bezug auf die Bedürfnisse verschiedener Stakeholder werden häufiger von Modellen und Prototypen als von einer bloßen Liste von Anforderungen festgestellt. Erwünschte Systemeigenschaften wie Sicherheit, Flexibilität und Wartbarkeit müssen von den Analysten zu den Anforderungen hinzugefügt werden.
Die Anforderungen sind in einem Dokument festgelegt, um das Verständnis aller Beteiligten zu erleichtern. Im Softwarebereich heißt das Dokument SRS und steht für Software Requirements Specification. Die Anforderungen werden von wichtigen Stakeholdern überprüft. Dies geschieht hauptsächlich über Präsentationen und das Spezifikationsdokument, manchmal aber auch mit Testfällen, die den Anforderungen entsprechen.
Requirements Engineering ist in erster Linie eine Kommunikation, eher eine Aktivität als eine technische. Es braucht multidisziplinäre Fähigkeiten. Das Requirements Engineering hilft Stakeholdern und Entwicklern, Konflikte zu lösen und sie in ihren Zielen zu vereinen. Dies führt zu einem robusten System.