· 

Erfolgsfaktoren des Requirements Engineering

Ziel meiner Diplomarbeit war es, das Umfeld des Requirements Engineering zu untersuchen und die jeweiligen Erfolgsfaktoren abzuleiten. Durch eine  SWOT-Analyse auf Basis von ausgwählten Projekten wurden Erfolgsfaktoren des Requirements Engineering sowie Soziale Fatoren, die das Projekt beeinflussen herausgefunden.

 

Erfolgsfaktoren des Requirements Engineering

  • Erfahrung in der Domäne
  • Anforderungserhebung
  • Anforderungsmanagement
  • Einbeziehung des Kunden
  • Toolunabhängigkeit

Soziale Faktoren, die das Projekt beeinflussen

  • Bereitschaft Verantwortung zu übernehmen
  • Teamzusammenstellung

Aufgrund eines Sperrvermerks in der Diplomarbeit darf ich keine weiteren Details veröffentlichen. 

 

 

Überblick über Requirements Engineering


Was ist eine Anforderung?

Das Institut der Elektrik- und Elektronik- Ingenieure (IEEE) definiert den Begriff Anforderung als:

(1) Beschaffenheit oder Fähigkeit, die ein Benutzer zur Lösung eines Problems oder zur Erreichung eines Zieles benötigt.

(2) Beschaffenheit oder Fähigkeit, die ein System oder System-Teile besitzen muss, um einen Vertrag, eine Norm, eine Spezifikation oder andere, formell vorgegebene Dokumentation zu erfüllen.

(3) Eine dokumentierte Darstellung einer Bedingung oder Fähigkeit gemäß 1 oder 2.

 

Die SOPHIST GROUP stellt eine verständlichere und umfassende Definition für Anforderung zur Verfügung:

Eine Anforderung ist eine Aussage über eine Eigenschaft oder Leistung eines Produktes, eines Prozesses oder der am Prozess beteiligten Person.

 

Beim Formulieren von Anforderungen sollte immer im Vordergrund stehen, dass Anforderungen beschreiben WAS ein System tun soll und nicht WIE dies erreicht werden soll.

 

Anforderungsarten und -Merkmale

 

Eine Anforderung unterscheidet sich in der Art zwischen funktionalen oder nicht-funktionalen Anforderungen mit unterschiedlichen Merkmalen.

  • Funktionale Anforderung: Die funktionalen Anforderungen beschreiben Aktionen, die von einem System selbstständig ausgeführt werden sollen, Interaktionen des Systems mit menschlichen Nutzern oder Systemen (Eingaben, Ausgaben) und Anforderungen zu allgemeinen, funktionalen Vereinbarungen und Einschränkungen. Daher kann diese Anforderungsart wieder in Funktions-, Verhaltens- und Strukturanforderung unterteilt werden.
  • Nicht- funktionale Anforderungen: Jede Anforderung, die nicht der Charakterisierung von funktionalen Anforderungen entspricht, wird den nicht-funktionalen Anforderungen zugeordnet. Diese Art von Anforderung wird als Randbedingung bezeichnet und bezieht sich in der Regel auf das gesamte System. Dazu gehören beispielsweise technische Anforderungen und Qualitätsanforderungen. Durch die nicht-funktionalen Anforderungen können vollständige Spezifikationen, eine sichere Planung, Rechtssicherheit und eine bessere Produktivität erreicht werden.

Qualitätskriterien für Anforderungen

Die Anforderungen unterliegen Qualitätskriterien, die ebenfalls von dem Institut der Elektrik- und Elektronik- Ingenieure (IEEE) definiert wurden. Anhand der Qualitätskriterien kann bestimmt werden, ob es sich um eine gute oder schlechte Anforderungsbeschreibung handelt:

  • Vollständigkeit 
  • Korrektheit 
  • Konsistenz der Anforderungen
  • Eindeutigkeit 
  • Prüfbarkeit
  • Verfolgbarkeit 
  • Bewertbarkeit/Gewichtbarkeit 

Zusätzlich können auch noch andere Qualitätskriterien wie Verständlichkeit für Stakeholder oder Umsetzbarkeit und Notwendigkeit betrachtet werden.

 


Was ist  Requirements Engineering?

Das Requirements Engineering (RE) befaßt sich mit dem Auffinden, dem Verstehen, der Dokumentation und der Überprüfung von Anforderungen an ein System. Es beschreibt einen systematischen Weg von der Projektidee über die Ziele zu einem vollständigen Satz von Anforderungen. Neben dem Vorgehen werden auch die bereits genannten Qualitätsmerkmale definiert, die jede einzelne Anforderung, aber auch das gesamte Anforderungsdokument erfüllen müssen.

Das Requirements Engineering kann zudem nochmals in Requirements Development (RD) und Requirements Management (RM) unterteilt werden.

  • Das Requirements Management dient zur Steuerung und Verwaltung der Anforderungen und umfasst alle Maßnahmen, welches die Anforderungsanalyse und die weitere Verwendung der Anforderung unterstützt. 
  • Unter Requirements Development versteht man alle Tätigkeiten, die zum Entwickeln der Anforderungsdefinition nötig sind.

Requirements Management

Ein gutes Requirements Management wird immer dann benötigt, wenn es eine große Anzahl an Anforderungen erhoben werden muss und dadurch eine komplexer Prozess mit vielen Beteiligten vorhanden ist. Im klassischen Projektumfeld hat sich IBM Doors und im agilen Umfeld JIRA von Atlassian als Tool etabliert.

Zu den wichtigsten Aufgaben des Requirements Management gehört die Gewährleistung der  Wiederverwendbarkeit und Nachverfolgbarkeit (Traceability) der Anforderungen. In der Regel gibt es die Rolle Requirement Manager für diese Aufgabe.

Durch eine gute Traceability Strategie können folgende Fragen beantwortet werden:

  • Welche Anforderung kann welchem Kunden zugeordnet werden?
  • Welche Abhängigkeiten gibt es zu anderen Anforderungen?
  • Welche Entscheidung führte zur Ablehnung einer Anforderung?
  • In welcher Komponente / Release wurde die Anforderung umgesetzt?
  • Durch welchen Test wurde die Anforderung überprüft?

Requirements Development

Alle Tätigkeiten, die für die Anforderungsdefinition notwendig sind, fallen unter das Requirements Development und ist die Hauptaufgabe des Requirements Engineers. Ein Ergebnis ist die Anforderungsspezifikation auf Basis der nachfolgenden Gruppierungen:

  • Gruppierung nach Detailebene: Durch Gruppierung auf Detailebene ist es möglich, die Anforderungen zielgruppenspezifisch zu definieren. Dies ermöglicht die Anforderungen abstrakter zu schreiben und die Spezifikation wird dadurch verständlicher. Zwischen den verschiedenen Projektbeteiligten kann leichter ein gemeinsames Verständnis erreicht werden. Der Aufwand für das Validieren der Anforderungen kann reduziert werden. Durch feinere Detailstufen wird die Anforderungsspezifikation im Gesamten zwar schwerer lesbar, jedoch wird jede einzelne Anforderung verständlicher. Feine oder grobe Anforderungen sollten nicht isoliert betrachtet werden, sondern immer im Zusammenhang mit der Zielgruppe. Grobe Anforderungen stecken den Rahmen ab, feine spezifizieren die Details.
  • Gruppierung nach Priorität: Die Priorität wird oft als Kritikalität bezeichnet und stellt eine Rangfolge dar. Die Rangfolge hat den Zweck, die Auswirkungen einer unerfüllten Anforderung zu bewerten. In die Bewertung fließt häufig der erwartete Schaden und die Eintrittswahrscheinlichkeit ein. Hierbei sollte insbesondere der Auftraggeber die kritischen Anforderungen herausfiltern. Die Zuordnung der Rangfolge bei Anforderungen kann nach Wichtigkeit und/oder Dringlichkeit erfolgen. Die Priorität zählt zu den typischen Attributen einer Anforderung, die in Werkzeugen für das Requirements Management abgebildet werden.
    In der Regel werden die Prioritäten in drei bis vier Stufen nach einem groben Schema bewertet. Dies könnte zum Beispiel mit den Abstufungen notwendig, gewünscht und optional erfolgen. Weniger geeignet sind die Stufen hoch, mittel und niedrig, da diese zuviel Raum für Falschinterpretation bieten.

Software-Produktentwicklungsprozess

Requirements Engineering  (und Usability Engineering) sind Bestandteile des Software-Produktentwicklungsprozesses

  • Geschäftsprozess-Modellierung: Ausgehend von den ersten Ideen, Geschäftsanforderungen und Projektziele wird eine Vision entworfen. Eine Vorstellung des Zwecks des geplanten Produktes wird durch die wichtigsten Geschäfts- und Anwendungsfälle geschaffen.
  • Anforderungsanalyse: Die funktionalen und nicht-funktionalen Anforderungen an das Produkt werden ausgearbeitet, indem die Anwendungsfälle ausformuliert und in einer Spezifikation lösungsneutral festgehalten werden (Requirements Engineering und Usability Engineering). 
  • Analyse und Design: Die Anforderungen und Anwendungsfälle werden in Geschäftsobjekte mit Abhängigkeiten überführt. Im Design erfolgt die Definition der Systemarchitektur. Dadurch wird die Struktur festlegt, welches Element über welche Schnittstelle kommuniziert.
  • Implementierung: Die Designklassen werden mit technischen Details ergänzt und komponentenweise umgesetzt. Die Überprüfung auf Funktionsfähigkeit sowie auf Erfüllung der Anforderungen erfolgt mit Hilfe von Unit Tests.
  • Test: Die einzelnen Komponenten werden in ein Gesamtsystem integriert und getestet. Anschließend wird das fertige Produkt durch die Auftraggeber abgenommen und eingeführt (Inbetriebnahme).

Vorgehenweise im Software-Produktentwicklungsprozess

Die vorgestellten Hauptaktivitäten bilden für jede Vorgehensweise die Grundlage. Die einzelnen Vorgehensmodelle unterscheiden sich jedoch im Formalisierungsgrad. Der Formalisierungsgrad gibt vor, wie stark was, wann durch wen erbracht werden muss. Die Wahl für ein geeignetes Vorgehen hängt von Faktoren wie Komplexität und Größe des Entwicklungsteams sowie organisatorischen Vorgaben ab.

Sequenzielles Vorgehen

Die Hauptaktivitäten werden in Phasen sequenziell hintereinander abgearbeitet. Jede Phase entspricht einem Meilenstein und liefert ein Ergebnis in Form einer Dokumentation. Die jeweiligen Ergebnisse stellen den Input für die darauffolgende Phase dar. Typische Vertreter dieser schwergewichtigen Vorgehensweise sind Phasen-, Wasserfall-, oder Schleifenmodelle sowie das V-Model.

Iteratives Vorgehen

Beim iterativen Vorgehen werden die Hauptaktivitäten wiederholend als definiertes Inkrement durchlaufen. Ein Inkrement besteht aus allen Ergebnissen, die sich auf eine Teilmenge der Anforderung beziehen. Durch Erweiterung der Teilmenge im nächsten Schritt wird ein weiteres Inkrement erstellt. Als Vertreter für diese Vorgehensweise können das Spiralmodell und der Unified Process genannt werden.

Agiles Vorgehen

Agile Methoden sind spezifische Ausprägungen eines bestimmten Vorgehensmodells, bei dem auf Basis des agilen Manifest (Hervorhebung von Kommunikation, Kooperation und Erfahrung) schrittweise durch kurze Iterationen ein lauffähiges Produkt mit einem Minimum an Dokumentation erzeugt wird. Dabei stehen das Ergebnis und alle beteiligten Personen im Vordergrund, sodass eine große Nähe zum Auftraggeber und eine eigenverantwortliche Vorgehensweise vorhanden sind. Typische Vertreter dieser leichtgewichtigen Vorgehensweise sind Scrum und extreme Programming (XP).

EINORDNUNG REQUIREMENTS ENGINEERING IN DIE PRODUKTENTWICKLUNG

Phasenorientiertes Requirements Engineering

In schwergewichteten Vorgehensmodellen erfolgt die vollständige Ermittlung der Anforderungen für jedes Projekt getrennt vor der Umsetzung als eine eigene abgeschlossene Phase (Anforderungsanalyse).

 

Kontinuierliches Requirements Engineering

Beim kontinuierlichen Requirements Engineering wird der phasenorientierte Ansatz durch projektorientierte Tätigkeiten ergänzt, wie es bereits in agilen Methoden vorzufinden ist. Dadurch werden bei diesen leichtgewichtigen Vorgehensmodellen die für die bevorstehende Iteration benötigten Anforderungen erst kurz vor Beginn der eigentlichen Umsetzung detailliert, da sich die Anforderungen im Laufe des Projektes ändern können.

RequirementS Engineering Prozess

Requirements Engineering gehört zu der Kategorie Design Prozess. Dieser Prozess bezieht die Kreativität, die Abhängigkeiten zwischen den Stakeholder und das Urteilsvermögen sowie das Hintergrundwissen und die Erfahrung aller Beteiligten mit ein.

Folgende Aktivitäten sind im Requirements Engineering Prozess vorhanden:

  • Requirements Eliciation: Bei der Erhebung des Wissens wird das Ziel verfolgt, Kundenwünsche und mögliche Lösungswege für konkrete Probleme möglichst vollständig zu sammeln. Die Erhebung der Anforderung ist ein Teilprozess der Anforderungsanalyse. Die Systemanforderungen werden durch Gespräche mit den betroffenen Stakeholdern gebildet. Grundlagen dafür sind das Systemdokument, das Anwendungsgebietswissen und die Marktstudien. Synonyme sind Anforderungserfassung (Requirements Acquisition) oder Anforderungsermittlung (Requirements Discovery).
  • Requirements Analysis und Negotiation: Die Anforderungsanalyse mit den Verhandlungen ist ein Hauptbestandteil des Requirments Enginering Prozesses. Nach der Ermittlung der Anforderungen wird das Ziel verfolgt, die Anforderungen so zu formulieren, dass diese eindeutig testbar und verständlich sind. Die Anforderungen werden bis in Detail analysiert und mit verschiedenen Stakeholdern solange verhandelt, bis feststeht, welche Anforderung akzeptiert werden können. Dieser Prozess ist notwendigen, da es durch Anforderungen aus unterschiedlichen Quellen und durch unvollständige Informationen zu Konflikten kommen kann. Um sich auf die erforderlich vereinbarten Anforderungen für das System einigen zu können, ist Flexibilität und die Vermittlung zwischen den Stakeholdern nötig.
  • Requirements Documentation: Die vereinbarten Anforderungen werden detailliert dokumentiert. Das Dokument sollte für alle Stakeholder verständlich geschrieben sein. In der agilen Vorgehensweise wird hier eher iterativ vorgegangen, um unnötige Dokumentation zu vermeiden.
  • Requirements Validation: Anschließend werden die Anforderungen auf die Qualitätsmerkmale überprüft. Es sollte eine sorgfältige Überprüfung der Anforderung auf Übereinstimmung und Vollständigkeit geben. Dieser Prozess soll Probleme im Anforderungsdokument ermitteln, bevor es als Grundlage für die Systementwicklung verwendet wird.

Die einzelnen Phasen, die beim Prozess nötig sind können auch mehrmals durchlaufen werden.


Usability Engineering Prozess

Die Disziplin Usablity Engineering ist parallel zur Produktentwicklung laufender und iterativer Prozess, der möglichst mit diesem eng verzahnt sein muss. Durch interdisziplinare Zusammenarbeit werden verschiedene Sichtweisen betrachtet. Bereits am Anfang ist während der Anforderungsanalyse das Usability Engineering im Produktentwicklungsprozess zu berücksichtigen, um eine optimale Gebrauchstauglichkeit des Produktes zu gewährleisten. Ebenso muss ein Vertreter der Zielgruppe rechtzeitig in den Prozess mit eingebunden werden. 

Ein benutzerorientierter Usability Engineering Prozess beinhaltet die Analyse, die Konzeption und die Umsetzung, die Evaluation sowie der abschließenden Einführung und stellt eine Ergänzung des Requirements Engineering dar. Durch eine gute User Experience (UX) kann auf dem Markt ein Wettberwersbvorteil entstehen. 

  • Analyse des Kontexts der Benutzer: In der ersten Phase wird, neben der Analyse der Geschäftsprozesse, der Kontext der Benutzer untersucht, um die optimalen Abläufe und Prozesse sowie den Funktionsumfang und die benötigten Informationen zu definieren. Diese Phase kann mit der Anforderungsanalyse des Requirements Engineering gekoppelt werden, um sicherzustellen, dass unter Einbezug der Benutzer die richtigen Anforderungen umgesetzt werden. 
  • Konzeption und Umsetzung einer Lösung: Aus Sicht der Benutzer werden anschließend die Anforderungen schrittweise mit kontinuierlichen Feedbackschleifen umgesetzt, um optimale Prozessabläufe zu fixieren. Dadurch entsteht ein Modell, mit dem es möglich ist die Funktionen und das Verhalten des Systems sowie die Arbeitsweise der Benutzer mit dem System zu erkennen. Sobald das Modell ausgereift ist, fließen die Ergebnisse, wie die funktionalen und nicht-funktionalen Anforderungen, in die Spezifikation ein und dienen als Grundlage für die Umsetzung. Die Optimierung muss sich hierbei nicht nur auf die Abläufe der Benutzer beziehen, sondern kann auch andere Ebenen wie Struktur und Informationen beinhalten.
  • Evaluation der Resultate: Nach der erfolgreichen Umsetzung erfolgt die Überprüfung des (fertigen) Systems in enger Zusammenarbeit mit der Benutzer. Dieses Feedback fließt als Optimierung wieder in das System mit ein.

Kommentar schreiben

Kommentare: 0