ReqIF. Mit dem Requirements Interchange Format Anforderungen austauschen
Was bedeutet ReqIF? Wie funktioniert der Standard? Und welche Vorteile bietet ReqIF?
Was bedeutet ReqIF? Wie funktioniert der Standard? Und welche Vorteile bietet ReqIF?
ReqIF ist die Abkürzung für Requirements Interchange Format. Das Format ist ein Metamodell, das durch ein XML-Schema definiert ist. Der ReqIF-Standard wurde vor allem dazu entwickelt, Anforderungen zwischen unterschiedlichen Requirements Engineering-Tools auszutauschen. Anforderungen bzw. Informationen zu den Anforderungen inkl. Metadaten und zusätzlichen Dateien wie Grafiken werden in einer XML-Datei festgehalten. Diese Datei muss eine besondere Struktur und spezielle XML-Tags vorweisen, damit sich die Anforderungen in das andere Werkzeug importieren lassen.
Anstatt die Dateiendung .xml zu verwenden, empfiehlt der Standard die Endung .reqif. Wenn die Datei eingebettete Objekte enthält, müssen alle zugehörigen Dateien zusammengepackt (“gezippt”) werden. Die gezippte Datei erhält dann – so die Empfehlung des Standards – die Erweiterung .reqiz.
Der Ursprung des ReqIF-Standards findet sich in der Automobilindustrie. Der HIS-Verband, bestehend aus deutschen Automobilherstellern, definierte im Jahr 2004 den Standard RIF zum Austausch von Anforderungen. Dies war notwendig, weil die bisherigen Verfahren wie über PDF fehleranfällig waren oder unterschiedliche Tools mit proprietären Formaten eingesetzt wurden. Ein paar Jahre vergingen und im April 2011 geschah es schließlich, dass der OMG ReqIF-Standard als Nachfolger von RIF in Version 1.0.1 veröffentlicht wurde. Mittlerweile gilt die Version 1.2, die 2016 an die Öffentlichkeit gelangte. Das ReqIF-Format wird heutzutage auch in anderen Branchen als der Automobilindustrie eingesetzt.
Den Standard können Sie übrigens hier herunterladen und ansehen: https://www.omg.org/spec/ReqIF/About-ReqIF/
Kurze Definition für ReqIF:
Eine ReqIF-XML-Datei enthält sowohl die Beschreibung der Datentypen als auch die Daten selbst. Der grundsätzliche Aufbau der XML-Datei ist in folgender Grafik zusammengefasst:
Auf die ReqIF-XML-Datei übertragen, bedeutet das: Die Datei beginnt mit dem Tag < REQ-IF >
, der die drei Abschnitte < REQ-IF-HEADER >
, < REQ-IF-CONTENT >
und < REQ-IF-TOOL-EXTENSION >
umschließt.
< REQ-IF-HEADER >
: Hier finden sich Metadaten wie zum Beispiel das Erstellungsdatum der Datei. (obligatorisch)< REQ-IF-CONTENT >
: Sowohl die Beschreibung der Datentypen als auch die Daten, d.h. die Anforderungen selbst, befinden sich in diesem Abschnitt. (obligatorisch)< REQ-IF-TOOL-EXTENSION >
: Es lassen sich in diesem Abschnitt zusätzliche Informationen bezüglich des Tools dokumentieren. (optional)Der grundsätzliche Aufbau von < REQ-IF-CONTENT > ist in folgender Grafik zusammengefasst:
Datentypen werden innerhalb des Tags < DATATYPES >
definiert. Als Datentypen kennt der ReqIF-Standard u.a. String, Boolean, Integer, Enumeration, Real, Simple, Date und XHTML.
Beispiel einer Definition von “String”, “Boolean” und “Date”:
Innerhalb des Tags < SPEC-TYPES >
definieren Sie, welche Anforderungstypen es gibt (funktionale Anforderung, Qualitätsanforderung, Performance-Anforderung etc.), welche Attribute bzw. Eigenschaften diese Anforderungstypen besitzen und welche Beziehungen zwischen Anforderungen bestehen können (Verfeinerung, Abhängigkeit etc.). Hier lassen sich gleichzeitig auch Standardwerte für die Attribute definieren.
Beispiel eines Anforderungstyps “FUNC-REQ” und dem Attribut “FUNC-REQ-TXT” vom Typ “String” (Es handelt sich also um den Typ “Funktionale Anforderung”. Für eine Anforderung dieses Typs lässt sich – nach dieser Definition – nur ein Beschreibungstext erfassen.):
Die eigentlichen Anforderungen finden sich in der ReqIF-Datei innerhalb von
< SPEC-OBJECTS >
.
Beispiel einer Anforderung vom Typ “FUNC-REQ” mit einem String-Wert für das Attribut “FUNC-REQ-TXT” (Es ist also eine funktionale Anforderung mit Beschreibungstext):
Um eine Beziehung in einer ReqIF-Datei zwischen zwei Anforderungen zu definieren, wird der Tag < SPEC-RELATIONS >
eingesetzt. Für eine Beziehungsdefinition brauchen Sie immer ein Quell- und ein Ziel-Element. Damit stellen Sie also die Traceability sicher.
Beispiel für eine SpecRelation (Die Anforderung “Erkennung von Feuer” wurde von der Anforderung “Überwachung der Bodentemperatur” abgeleitet):
Innerhalb des Tags < SPECIFICATIONS >
können Sie die Anforderungen auflisten und hierarchisch gliedern. In diesem Sinne entspricht es einem Anforderungsdokument bzw. einer Anforderungsspezifikation.
Beispiel einer Specification mit SpecHierarchy (Hier wird die abgeleitete Anforderung unterhalb der Basisanforderung aufgelistet):
Durch eine RelationGroup in der ReqIF-Datei lassen sich Gruppen von Relationen darstellen.
Beispiel einer RelationGroup:
Mit nur wenigen Klicks können Sie ReqIF-Dateien nach objectiF RPM importieren oder Ihre Anforderungen als ReqIF-exportieren. Probieren Sie selbst mit der kostenlosen Testversion.