Requirements Interchange Format (ReqIF) #639415/v3819 |
Tags:
ReqIF
Requirements Interchange Format (ReqIF)Starting with CodeBeamer 7.6.0, you can exchange data between CodeBeamer and other systems, e.g. IBM Rational DOORS, via Requirements Interchange Format (ReqIF) Table of Contents
ReqIF
Other than the name suggests, the Requirements Interchange Format is not restricted to exchanging requirements only. ReqIF is a generic semantic data model, that allows to define arbitrary types of
Item types are similar to classes in object orientated programming, tables in a relational database model or trackers in CodeBeamer. There can be any number of item types in a ReqIF file, each having a different set of attributes, e.g. User Story, Use Case, Requirement, Test Case, etc. Relation types are similar to CodeBeamer association types. They define a specific type of relation between two items, e.g. "Depends On", "Derived From", etc. Relation types can also define attributes for relations, e.g. the equivalent to "Suspected". Specifications aggregate items into a tree hierarchy. Specifications can include items of different types and the same item can be included in multiple specifications or in the same specification multiple times. Specifications are more like tables of content or document outlines than real documents, because they cannot carry any extra information, except the tree hierarchy. The best equivalent to a Specification in CodeBeamer is a tracker document view (although trackers can only contain items of the same type). Example ReqIF schema: ![]() ReqIF does not have a concept of reference fields or foreign keys, but CodeBeamer is able to convert reference fields into Relations upon export and bind Relation types to tracker reference fields upon import. ReqIF does also not have a concept for exchanging a history of changes or comments about changes. A ReqIF file/archive only contains the current/head revision of the data to exchange. Exchanging data via ReqIFThere are four use cases in a ReqIF exchange process:
![]() The scenario depicted above is only an example. CodeBeamer can be also at the begin or at the end of a ReqIF exchange chain. There can be any number of iterations between two exchange partners. Exchanging work/config items of the following type is not supported:
Import of ReqIF dataYou can import ReqIF data
Create a new project from ReqIF dataCreating a new project for the ReqIF data to import is preferable, if these are customer requirements, that should only be qualified, commented and referred to within CodeBeamer and should otherwise be kept unchanged. Write access to the imported data should be restricted and larger structural changes of the imported data model (tracker configuration) should be avoided, if continuous/iterative exchange of modifications/updates between the origin/customer and CodeBeamer is required. Adding new fields to imported trackers is no problem in that respect. But of cause, these are only recommendations.
On the Next screen, you can then enter the name of the new project, and you can also map the ReqIF data to import to target trackers in the new project. presented the object model found in the ReqIF file to import.
The following screenshots are only examples. They may look completely different, depending on the data model of the ReqIF file to import: Example 1: SparxSystems Enterprise Architect ![]() This example ReqIF file contains one Specification with an exclusive Specification Type (Tracker) and 2 Items. Special about the Items is:
There are also additional Item Types, that are not related to any Specification, e.g. User Story. You could map User Story to the default User Stories tracker, but in our example we do not map/import them (--Ignore--), simply because there are no items of this type. Ignoring empty Specifications, Item Types or Relations, as well as empty attributes, may not be appropriate, if you intend to edit the imported data, e.g.
Example 2: IBM Rational DOORS ![]() In ReqIF files produced by IBM Rational DOORS, typically each Specification has it's own Type and only contains Items of a single type. Because the association between Specification and Item Type is only defined indirectly via: Specification → SpecHierarchy → SpecObject → SpecObjectType, the Item Type of an empty Specification is undefined, and will be listed under the non-exclusive/shared Item Types. DOORS requirements also have (along with lots of other attributes), each a
But whether the attribute actually has a value, depends upon the type of the requirement:
If the mapping of ReqIF attribute to target field is ambiguous, e.g. both ReqIF.ChapterName and ReqIF.Name could be mapped to Summary, then you can use the number of items, where the field has a value, and the list of the first 10 field values, to find the best match. In the example above, only 1 item has a ReqIF.Name, but 9 items have a ReqIF.ChapterName: So use ReqIF.ChapterName for Summary. Example 3: IBM Rational Requirements ![]() In ReqIF files produced by IBM Rational Requirements, Specifications typically contain items of different types, e.g. Heading, Information, Requirement etc. Because all these items are mapped to the same target tracker, each item type must have a unique set of qualifiers, to identify items of this type in the tracker. E.g. Heading items are those items in the target tracker, where Type == Folder Specifications can also refer to (config) items, that are not part of the Specification itself, e.g. Actor. These separate Item Types should typically be mapped to appropriate config item trackers, e.g. Actors. In IBM Rational Requirements, all item types have a ReqIF.Name and a ReqIF.Text, that should be mapped to item Summary and Description. The item type Heading also has a ReqIF.ChapterName, but the value of this attribute is the same than ReqIF.Name, so it can be safely ignored. Target TrackerFor each Specification and standalone Item Type to import, you have to map this type of items to a target CodeBeamer Tracker.
Ignoring empty Specifications and Item Types may not be appropriate, if you intend to edit the imported data, e.g.
Depending on the type of the selected target tracker, additional mappings for the chosen target may be necessary. Target TableFor trackers with embedded tables like Test Cases or Test Sets, there is an optional embedded Table selector.This allows to map input items not to main items of the target Tracker, but to rows in the selected embedded Table of a main/parent target tracker item. From another example ReqIF import: ![]() Please note, that mapping items to an embedded tracker item Table (e.g. Test Cases -> Test Steps) will only work, if you have also a mapping for the main tracker items (e.g Test Cases) and there is a Specification, that establishes the parent/child relation between the main tracker items (e.g. Test Cases) and their respective sub items (e.g. Test Steps) in it's hierarchy tree. Target QualifiersYou can map multiple input Item Types to the same CodeBeamer target tracker (table). But in this case you must additionally specify a set of item qualifiers, that uniquely identify this subset of items in the target tracker (table).In our Example 1, the input Item Types Functional Requirement, Performance Requirement, Scalability Requirement, Security Requirement, Maintainability Requirement, Usability Requirement and Legal Requirement can all be mapped to the pre-defined tracker System Requirement Specifications, and we can use the field Type as unique item qualifier: ![]() For each input Item Type mapped to System Requirement Specifications and using Type as item qualifier, you must choose a different type value from the drop down list. ![]() If there is no pre-defined value matching the Item Type, you can create a new value via New Value... at the bottom of the drop down list If a single qualifier field/value pair is not sufficient, to uniquely identify item sub-sets, then you can add More qualifiers.... To remove chosen qualifiers, click on Remove behind the qualifier. If you have chosen multiple qualifiers, you can re-order them by dragging. Target FieldsFor each mapped Specification, Item Type and Relation Type, the type attributes must be either mapped to target (tracker) fields or ignored.
Only for Item Type:
In CB-7.9.1 and newer, you can also choose to Ignore all or Assign all attributes, whose name starts with a common prefix, e.g. "ReqIF.*" . Import StatusIn CB-9.5 and newer, codeBeamer automatically adds the pseudo attribute ReqIF.ImportStatus to all Items to import. Remove/Restore itemsIn order for CodeBeamer, to recognize deleted objects or object deletions upon import:
The simple absence of previously imported objects in a subsequent re-import does by default not remove the absent objects in CodeBeamer, to avoid unintended removals as in the following scenario:
But when importing ReqIF data into an existing project (see below), CB-9.4 and newer, allows to optionally choose, whether items in mapped target trackers, that were imported via ReqIF before, but are absent in the current ReqIF file/archive to import, should be removed (moved to trash), or not: ![]() Please consider the scenario depicted above, before you activate this option! Relation type mappingInput Relation Types must be mapped to CodeBeamer Association types and/or Reference fields. You can also bind an input Relation type to target Tracker Reference fields: A Relation Type can also have attributes, which must be either ignored or mapped to appropriate target Association fields.
But you can create new custom Association fields by right-clicking on the target field dropdown list and choosing New Field... from the popup menu. Please note, that you will not be able to see custom Association fields at the CodeBeamer GUI. In order for CodeBeamer, to recognize deleted relations or relation deletions upon import:
The simple absence of previously imported relations in a subsequent re-import does not remove the absent associations in CodeBeamer!
If you have finished your ReqIF import configuration, you should consider to Save your work before clicking on Next.
Especially if there are lots of Item types and/or attributes to map (e.g. Importing from IBM Rational DOORS), you may need several iterations, until you are satisfied with the import result. Being able to Load (and refine) your previously used input configuration can save you considerable time and work. Import ReqIF data into an existing project
![]() In the upcoming File Upload dialog, choose the ReqIF file/archive to import: ![]() In CB-9.2 and older, you can only import ReqIF data into an existing project,
In CB-9.3 and newer, you can always import ReqIF data into an existing project,
The data schema of the selected ReqIF file/archive will be shown next, and you have to map input data to target trackers: ![]() If this is an import from a yet unknown ReqIF data source (according to the Conversation- and RepositoryId in the ReqIF Header of the ReqIF file/archive), then you will have to provide a unique name for the new ReqIF data source: ![]() If this is an import of new or updated ReqIF data from an already known data source (according to the Conversation- and RepositoryId in the ReqIF Header of the ReqIF file/archive), then you can also see information about the Last Import from that source and the import History. Also the configuration used for that last import will be automatically loaded and shown: ![]() If there are multiple data sources for the same Conversation- and RepositoryId, then the one used for the Last Import will be shown and pre-loaded, but you can easily switch to another one. You can also choose to store this import under a -- New Source -- name. It is not necessary, to explicitly Load the ReqIF import configuration from a file, because codeBeamer will automatically load the last import configuration used for the selected Source. It is not necessary, to explicitly Save the ReqIF import configuration to a file, because codeBeamer will automatically save it to a file called Source.jsonin the specific ReqIF Import folder in the Project's Documents, where Source is the name you assigned to the ReqIF data source. ![]() If you are trying to import a ReqIF file/archive
![]() In general, you should not continue here, because you are most likely going to overwrite current project contents with obsolete data! But if you have good reason (e.g. repeat the last import because you forgot to map some new specifications or attributes) and know what you are doing, then you may choose to ignore the warnings and continue. But you have been warned! And that will be visualized on the import configuration screen ![]() and also later in the import history: ![]() After the import has finished successfully, statistics about the imported, updated or deleted items per target tracker are shown. ReqIF Import HistoryIn CB-9.4 and newer, there is a history of all ReqIF imports into a project, grouped by source:
To view tracker items imported, updated or deleted by a specific import:
Export data as ReqIFTo export tracker items (Requirements, Use Cases, User Stories, Test Cases, etc.) from a project as a ReqIF archive:
In CB-9.4 and older, Export As ReqIF archive opened a submenu, where you had to choose between
In CB-9.5 and newer, this submenu does not longer exist. Instead you choose the export Destination in the upcoming dialog:
When creating a new destination, the default configuration according to the selected destination type will be shown. If you have already previously exported data as ReqIF (from this or another project) and saved the export configuration to a file, you can also Load and re-use this configuration again, but it is not necessary to Save the configuration to a file manually, because CB-9.5 and newer, will automatically remember the export configurations for all ReqIF destinations. Select project contents to exportPlease consider, that you should only export data, that the intended Destination system should see and can handle. First you have to select, from which trackers you want to export items:
![]() This way, CodeBeamer makes sure, that also the relations between the related/referring items are properly exported: ![]() Additionally, you can choose to export specific associations of the selected items, e.g. the dependencies of the Test Cases: ![]() Please note, that only associations to other tracker items can be exported, and only, if the target items are also in the same export. Information about associations, that have been deleted, will only be exported, if Deleted is selected under Fields ! This will include removed associations in the export, that will have their ReqIF.ForeignDeleted attribute set to true. ReqIF Export HistoryIn CB-9.5 and newer, there is also a history of all ReqIF exports out of a project, grouped by destination:
The export statistics show the numbers of exported tracker items per tracker. |
Fast Links
![]() codebeamer Overview codebeamer Knowledge Base Services by Intland Software |
This website stores cookies on your computer. These cookies are used to improve your browsing experience, constantly optimize the functionality and content of our website, and help us understand your interests and provide more personalized services to you, both on this website and through other media. With your permission, we and our partners may use precise geolocation data and identification through device scanning. You may click accept to consent to our and our partners’ processing as described above. Please be aware that some processing of your personal data may not require your consent, but you have a right to object to such processing. By using our website, you acknowledge this notice of our cookie practices. By accepting and continuing to browse this site, you agree to this use. Your preferences will apply to this website only.
Note that user-behavior analytics are being captured on this server to improve the Codebeamer user experience.