ReqIF. Exchange requirements with the requirements interchange format.
What does ReqIF mean? How does the requirements interchange format work? And what are its advantages?
What does ReqIF mean? How does the requirements interchange format work? And what are its advantages?
ReqIF is an abbreviation for Requirements Interchange Format. The format is a metamodel defined by an XML schema. The ReqIF standard was primarily developed to exchange requirements between different requirements engineering tools. Requirements and information about the requirements, including metadata and additional files such as graphics, are recorded in an XML file. This file must have a special structure and special XML tags so that the requirements can be imported from one tool into another.
Instead of using the .xml file extension, the standard recommends the .reqif extension. If the file contains embedded objects, all associated files must be packed (“zipped”) together. The zipped file then receives the .reqiz extension.
The ReqIF standard originated in the automobile industry. The HIS association, consisting of German car manufacturers, defined the RIF standard for the exchange of requirements in 2004. This was necessary because the previous practices, such using a PDF, were prone to errors or different tools with proprietary formats were used. A few years passed and in April 2011, the OMG ReqIF standard was finally published in version 1.0.1 as the successor to RIF. Meanwhile, version 1.2 was released in 2016. Today, the ReqIF format is also used in industries other than the automotive industry.
The standard can be downloaded and viewed here: https://www.omg.org/spec/ReqIF/About-ReqIF/
Short definition of ReqIF:
A ReqIF XML file contains both the description of the data types and the data itself. The basic structure of the XML file is summarized in the following graphic:
The file begins with the tag < REQ-IF >
, which contains the three sections < REQ-IF-HEADER >
, < REQ-IF-CONTENT >
and < REQ-IF-TOOL-EXTENSION >
.
< REQ-IF-HEADER >
: Metadata such as the date of creation are stored here. (mandatory)< REQ-IF-CONTENT >
: Both the description of the data types and the data, i.e. the requirements themselves, are in this section. (mandatory)< REQ-IF-TOOL-EXTENSION >
: Additional information regarding the tool can be documented in this section. (optional)The following graphic shows the basic structure of < REQ-IF-CONTENT >
Data types are defined within the tag < DATATYPES >
. The ReqIF standard recognizes data types such as String, Boolean, Integer, Enumeration, Real, Simple, Date and XHTML.
Here are examples for “String”, “Boolean” and “Date”:
The tag < SPEC-TYPES >
defines the requirement types (functional requirement, quality requirement, performance requirement etc.), which attributes or properties these requirement types have and which relationships can exist between requirements (refinement, dependency etc.). Standard values for the attributes can also be defined here.
Here’s an example of a requirement type “FUNC-REQ” and the attribute “FUNC-REQ-TXT” of the type “String” (In other words, the type is “Functional requirement”. This makes it so that only a descriptive text can be entered for a requirement of this type):
The actual requirements in the ReqIF file are found in < SPEC-OBJECTS >
.
Here’s an example of a requirement of the type “FUNC-REQ” with a string value for the attribute “FUNC-REQ-TXT” (a functional requirement with a description text):
To define a relationship between two requirements in a ReqIF file, the tag < SPEC-RELATIONS >
is used. For a relation definition you always need a source and a target element. This ensures traceability.
Here’s an example of a SpecRelation (The requirement “detection of fire” was derived from the requirement “monitoring of ground temperature”):
In the < SPECIFICATIONS >
you can list requirements hierarchically. In this sense, it corresponds to a requirements document or requirements specification sheet.
Here’s an example of a specification with SpecHierarchy (the derived requirements are listed beneath the base requirements):
Groups of relationships can be represented by a RelationGroup in the ReqIF file.
Here’s an example of a RelationGroup:
It only takes a few clicks to import ReqIF files into objectiF RPM or export your requirements as ReqIF files. Try it out with the free trial version!