Was versteht man unter Requirements Engineering?
Requirements Engineering beschreibt den Prozess, bei dem die Anforderungen an ein System erfasst, analysiert, spezifiziert, validiert und verwaltet werden. Es handelt sich um eine wichtige Phase im Entwicklungsprozess von Software oder anderen komplexen Systemen.
Das Ziel des Requirements Engineerings besteht darin, die Anforderungen der Stakeholder an das System zu verstehen und zu dokumentieren, um sicherzustellen, dass das System den Bedürfnissen und Erwartungen der Nutzer entspricht. Dies beinhaltet die Identifizierung und Dokumentation von funktionalen Anforderungen (z. B. was das System tun soll) sowie nicht-funktionalen Anforderungen (z. B. wie schnell das System sein sollte, wie sicher es sein muss oder wie es aussehen soll).
Die Aktivitäten des Requirements Engineerings umfassen die Ermittlung von Anforderungen durch Interviews, Workshops und andere Requirements Engineerings Techniken, die Spezifikation von Anforderungen in einer präzisen und eindeutigen Weise, die Validierung der Anforderungen durch Tests und Reviews sowie die Verwaltung von Änderungen und Versionen der Anforderungen im Verlauf des Entwicklungsprozesses.
Ein effektives Requirements Engineering kann dazu beitragen, dass das entwickelte System den Bedürfnissen und Erwartungen der Nutzer entspricht und dass Fehler und Nacharbeiten während des Entwicklungsprozesses reduziert werden [1].
Requirements Engineering kann sowohl in klassischen als auch agilen Softwareentwicklungsprozessen angewendet werden, wobei agile Methoden einen flexibleren Ansatz verfolgen, der schnelles Feedback und Anpassungen ermöglicht. Klassisches Requirements Engineering konzentriert sich auf die Dokumentation und Analyse im Voraus, während agiles Requirements Engineering flexibler ist und sich auf die Zusammenarbeit mit Kunden konzentriert. Klassisches Requirements Engineering eignet sich für detaillierte und komplexe Anforderungen, während agiles Requirements Engineering besser für flexible Projekte mit schnellem Feedback geeignet ist. Beide Ansätze können die Qualität der entwickelten Software verbessern, wenn sie effektiv umgesetzt werden.
Welche Anwendungsmöglichkeiten hat das Requirements Engineering?
Das Requirements Engineering wird in verschiedenen Bereichen angewendet, wie zum Beispiel:
- Software Engineering: In der Softwareentwicklung wird Requirements Engineering eingesetzt, um die Anforderungen an Software-Systeme und -Applikationen zu ermitteln, zu analysieren, zu spezifizieren, zu validieren und zu verwalten. Dadurch können Entwickler sicherstellen, dass das System den Anforderungen der Kunden und Benutzer entspricht.
- Systementwicklung: In der Systementwicklung wird Requirements Engineering eingesetzt, um die Anforderungen an komplexe technische Systeme wie Maschinen, Geräte und Anlagen zu ermitteln und zu dokumentieren.
- Unternehmensprozessoptimierung: Requirements Engineering wird auch eingesetzt, um die Anforderungen an Geschäftsprozesse zu ermitteln und zu optimieren. Dadurch können Unternehmen ihre Geschäftsprozesse verbessern und effizienter gestalten.
- Produktentwicklung: In der Produktentwicklung wird Requirements Engineering eingesetzt, um die Anforderungen an Produkte wie z. B. Konsumgüter, Industrieprodukte oder medizinische Geräte zu ermitteln und zu dokumentieren. Dadurch können Hersteller sicherstellen, dass ihre Produkte den Anforderungen der Kunden entsprechen.
- Projektmanagement: Requirements Engineering wird auch im Projektmanagement eingesetzt, um die Anforderungen an ein Projekt zu ermitteln und zu dokumentieren. Dadurch können Projekte besser geplant und kontrolliert werden, was zu besseren Projektergebnissen führen kann.
Insgesamt kann Requirements Engineering in allen Anwendungsbereichen eingesetzt werden, in denen Anforderungen ermittelt, dokumentiert und verfolgt werden müssen.
Welche Methoden & Techniken bzw. Aktivitäten beinhaltet das Requirements Engineering?
Im Allgemeinen umfasst der Requirements-Engineering-Prozess folgende Aktivitäten:
- Ermittlung von Anforderungen: In dieser Phase werden die Anforderungen an das System durch Interviews, Workshops, Fragebögen oder andere Techniken erfasst. Die beteiligten Personen können Kunden, Benutzer, Stakeholder, Fachleute oder Entwickler sein.
- Analyse von Anforderungen: In dieser Phase werden die ermittelten Anforderungen analysiert, um ihre Korrektheit, Vollständigkeit, Konsistenz und Realisierbarkeit zu prüfen. Es können auch Abhängigkeiten zwischen den Anforderungen identifiziert werden.
- Spezifikation von Anforderungen: In dieser Phase werden die Anforderungen in einer präzisen und eindeutigen Weise dokumentiert. Dies kann durch die Erstellung von Anforderungsdokumenten, Use Cases, User Stories, Prototypen oder anderen Techniken erfolgen.
- Validierung von Anforderungen: In dieser Phase werden die spezifizierten Anforderungen auf ihre Korrektheit und Erfüllbarkeit überprüft. Dies kann durch Tests, Reviews, Simulationen oder andere Techniken erfolgen.
- Verwaltung von Anforderungen: In dieser Phase werden die Anforderungen im Verlauf des Entwicklungsprozesses verwaltet, um sicherzustellen, dass sie während des gesamten Projekts auf dem neuesten Stand bleiben. Änderungen an den Anforderungen werden verfolgt, dokumentiert und verwaltet [1][2].
Der Requirements-Engineering-Prozess kann iterativ und inkrementell sein, was bedeutet, dass die Aktivitäten mehrmals durchlaufen werden können, um sicherzustellen, dass die Anforderungen korrekt und vollständig erfasst wurden und dass alle Änderungen und Anpassungen berücksichtigt wurden.
Was sind die Vor- und Nachteile von Requirements Engineering?
Vorteile:
- Verbesserte Kundenzufriedenheit: Durch ein effektives Requirements Engineering können die Anforderungen der Kunden und Benutzer präzise erfasst und dokumentiert werden, was dazu beitragen kann, dass das System den Erwartungen und Bedürfnissen der Nutzer entspricht.
- Reduzierung von Fehlern und Nacharbeiten: Durch das Erkennen und Beseitigen von Fehlern und Inkonsistenzen in den Anforderungen kann das Risiko von Fehlern im späteren Entwicklungsprozess reduziert werden. Dadurch können die Kosten und der Zeitaufwand für Nacharbeiten reduziert werden.
- Bessere Planbarkeit und Kontrolle: Durch ein strukturiertes Requirements Engineering kann der Entwicklungsprozess besser geplant und kontrolliert werden. Es können realistische Zeitpläne erstellt und Risiken frühzeitig identifiziert werden.
- Bessere Kommunikation und Zusammenarbeit: Durch das gemeinsame Verständnis der Anforderungen können Kunden, Benutzer und Entwickler besser zusammenarbeiten und kommunizieren. Dadurch können Konflikte und Missverständnisse vermieden werden [1].
Nachteile:
- Hoher Zeit- und Ressourcenaufwand: Ein effektives Requirements Engineering erfordert einen erheblichen Zeitaufwand und Ressourceneinsatz, insbesondere in der Ermittlungs- und Spezifikationsphase.
- Schwierige Abwägung von Prioritäten: Bei der Ermittlung von Anforderungen können unterschiedliche Prioritäten und Anforderungen der Stakeholder auftreten. Die Abwägung und Priorisierung dieser Anforderungen kann schwierig sein.
- Änderungen und Anpassungen: Anforderungen können sich während des Entwicklungsprozesses ändern, was Änderungen und Anpassungen erforderlich macht. Die Verwaltung dieser Änderungen kann zusätzliche Arbeit und Zeit erfordern.
- Komplexität und Unvorhersehbarkeit: Bei der Entwicklung komplexer Systeme können Anforderungen und Abhängigkeiten zwischen den Anforderungen schwer vorherzusagen sein. Dadurch kann der Requirements-Engineering-Prozess komplexer und unvorhersehbarer werden [3].
Was sollte man noch über Requirements Engineering wissen?
Im Folgenden sind einige zusätzliche Informationen über das Requirements Engineering aufgeführt:
- Requirements Engineering kann ein iterativer Prozess sein: Der Prozess des Requirements Engineering ist iterativ, das bedeutet, dass die Aktivitäten und Methoden im Laufe des Entwicklungsprozesses wiederholt werden, um sicherzustellen, dass die Anforderungen korrekt erfasst und umgesetzt werden.
- Stakeholder-Management ist wichtig: Requirements Engineering beinhaltet eine enge Zusammenarbeit mit verschiedenen Stakeholdern, wie zum Beispiel Kunden, Benutzern, Entwicklern und Managern. Ein effektives Stakeholder-Management ist daher wichtig, um sicherzustellen, dass die Anforderungen aller Stakeholder erfasst und berücksichtigt werden.
- Dokumentation ist wichtig: Die Dokumentation der Anforderungen ist ein wichtiger Bestandteil des Requirements Engineering. Durch eine klare und eindeutige Dokumentation können Missverständnisse und Fehler vermieden werden. Auch die Nachvollziehbarkeit und Verfolgbarkeit der Anforderungen wird durch eine gute Dokumentation sichergestellt.
- Requirements Engineering erfordert interdisziplinäres Wissen: Requirements Engineering erfordert Wissen aus verschiedenen Disziplinen, wie zum Beispiel Informatik, Ingenieurwesen, Psychologie und Kommunikation. Ein interdisziplinäres Team ist daher oft erforderlich, um effektives Requirements Engineering durchzuführen.
- Requirements Engineering hat Einfluss auf den gesamten Entwicklungsprozess: Die Anforderungen bilden die Grundlage für die gesamte Entwicklung eines Systems oder Produkts. Daher hat das Requirements Engineering einen erheblichen Einfluss auf den gesamten Entwicklungsprozess und auf das Endergebnis.
- Requirements-Engineering-Tools können hilfreich sein: Es gibt eine Vielzahl von Tools, die im Requirements Engineering eingesetzt werden können, wie zum Beispiel Anforderungsmanagement-Tools oder Modellierungstools. Diese können die Durchführung des Requirements Engineering erleichtern und die Effektivität verbessern [1].
- Requirements Engineering ist eng mit Systems Engineering verbunden: Das Requirements Engineering identifiziert und dokumentiert die Anforderungen eines Systems, während das Systems Engineering diese Anforderungen in den gesamten Lebenszyklus des Systems integriert. In einer Systems Engineering-Schulung werden in der Regel auch die Grundlagen des Requirements Engineering vermittelt, um sicherzustellen, dass die Teilnehmer ein ganzheitliches Verständnis für den Entwicklungsprozess haben.
Insgesamt ist das Requirements Engineering ein wichtiger Prozess in der Entwicklung von Systemen und Produkten, der darauf abzielt, die Anforderungen der Stakeholder zu ermitteln, zu dokumentieren und zu verwalten. Ein effektives Requirements Engineering trägt dazu bei, dass das entwickelte System oder Produkt den Anforderungen der Stakeholder entspricht und erfolgreich am Markt besteht.
Quellen:
- https://www.ireb.org/content/downloads/3-cpre-foundation-level-handbook/cpre_foundationlevel_handbook_de_v1.1.1.pdf
- Pohl, K.: Requirements Engineering: Fundamentals, Principles, and Techniques, Springer, 2010.
- https://www.researchgate.net/publication/272863222_A_Review_of_Requirement_Engineering_Issues_and_Challenges_in_Various_Software_Development_Methods