Requirements Interchange Format (ReqIF) #639415/HEAD / v5819 |
Tags:
ReqIF
Requirements Interchange Format (ReqIF)Since codebeamer 7.6.0, it is possible to exchange data between codebeamer and other systems, for example, with IBM Rational DOORS, via Requirements Interchange Format (ReqIF). Table of Contents
ReqIF is an XML file based data exchange, with the following file extensions:
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 types are not supported:
Import of ReqIF dataReqIF data can be imported
Caution: ReqIF imports
This is not a bug, but intentional, in order for the ReqIF import to succeed. If required, ReqIF.ImportStatus (see below) can be used, typically in conjunction with a special tracker view, to review all items, that were imported, updated or marked for deletion by a ReqIF import, in a subsequent process step.
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. Of course, these are only recommendations.
On the Next screen, the name of the new project can be added, map the ReqIF data can be mapped 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. The User Story could be mapped to the default User Stories tracker, but in the current example these are not mapped/imported (--Ignore--) as there are no items of this type.
Ignoring empty Specifications, Item Types or Relations, as well as empty attributes may not be appropriate if the imported data is intended to be edited. For example:
and then re-export the modified data.
Example 2: IBM Rational DOORS
In ReqIF files produced by IBM Rational DOORS, typically each Specification has its 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 the number of items can be used, 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, this type of items needs to be mapped to a target codebeamer Tracker.
Ignoring empty Specifications and Item Types may not be appropriate. To edit the imported data,
and then re-export the modified data.
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:
Mapping items to an embedded tracker item Table (e.g. Test Cases ► Test Steps) only works if a mapping for the main tracker items has also been created (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 its hierarchy tree.
Target QualifiersMultiple input Item Types can be mapped to the same codebeamer target tracker (table). In this case, a set of item qualifiers needs to be additionally specified that uniquely identifies this subset of items in the target tracker (table).
In our Example 1, the input Item TypesFunctional 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, a different type value needs to be chosen from the drop-down list.
If there is no pre-defined value matching the Item Type, a new value can be created 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, add More qualifiers.... To remove chosen qualifiers, click on Remove behind the qualifier. Multiple qualifiers can be re-ordered 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.
to find the best match.
Only for Item Type:
Since codebeamer 7.9.1, the Ignore all or Assign all option can be chosen for attributes the name of which starts with a common prefix, e.g. ReqIF.* . Import StatusSince codebeamer 9.5, 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:
Upon (re-)import:
Please note: 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:
When importing ReqIF data into an existing project (see below), codebeamer 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:
Consider the scenario depicted above before activating this option.
Relation type mappingInput Relation Types must be mapped to codebeamer Association types and/or Reference fields. An input Relation type can also be bound to target Tracker Reference fields: A Relation Type can also have attributes, which must be either ignored or mapped to appropriate target Association fields.
New custom Association fields can be created by right-clicking on the target field dropdown list and choosing New Field... from the popup menu. Custom Association fields cannot be seen at the codebeamer GUI.
In order for codebeamer, to recognize deleted relations or relation deletions upon import:
Upon (re-)import:
The simple absence of previously imported relations in a subsequent re-import does not remove the absent associations in codebeamer.
Having finished the ReqIF import configuration, consider to [Save] the executed 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), several iterations may be needed until the import result is considered satisfactory. Being able to Load (and refine) previously used input configuration can save considerable time and work.
Disable structural changesAs an OEM, that is exchanging requirements with suppliers via ReqIF, to make sure that suppliers
then use the Disable structural changes option (since codebeamer 21.04 or newer) when re-importing feedback (use case 4) from the suppliers.
Disable structural changes really only makes sense for OEMs in use case 4, when re-importing feedback (use case 4) from the suppliers, but not for suppliers, when (re-)importing requirements from OEMS (use case 1 and 4).
By selecting the Disable structural changes checkbox:
All ignored structural changes will be reported in the import statistics under Failed.
If the Disable structural changes checkbox is selected and the import configuration is intended to be changed in such a way, it would result in explicit structural changes, e.g.
then codebeamer asks whether to
By allowing and making configuration changes, that result in structural changes, then the only way to Disable structural changes again, is to Cancel the import and start from scratch. Import ReqIF data into an existing project
In the upcoming File Upload dialog, choose the ReqIF file/archive to import:
In codebeamer 9.2 and older, ReqIF data can only be imported into an existing project,
Since codebeamer 9.3, ReqIF data can always be imported into an existing project,
The data schema of the selected ReqIF file/archive is shown next, and input data needs to be mapped 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 a unique name for the new ReqIF data source needs to be provided:
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), information about the Last Import can also be seen from that source and the import History. Also the configuration used for that last import is automatically loaded and shown:
If there are multiple data sources for the same Conversation- and RepositoryId, then the one used for the Last Import is shown and pre-loaded, it can be switched to another one. This import can also be stored 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.json in the specific ReqIF Import folder in the Project's Documents, where Source is the name the user assigned to the ReqIF data source.
When importing a ReqIF file/archive
then, since codebeamer 9.5 and newer, an appropriate warning dialog is shown:
In general, it is not advised to continue here because the current project contents are most likely going to be overwritten with obsolete data.
Having a good reason (e.g. repeat the last import because the mapping of some new specifications or attributes has been forgotten), and deep knowledge and experience, the user may choose to ignore the warnings and continue, however, this is not advised.
This is visualized on the import configuration screen:
and also later in the import history:
codebeamer 9.3 and newer will no longer create baselines upon ReqIF imports into an existing project. Asynchronous ReqIF import in backgroundSince codebeamer 21.09, ReqIF imports will be executed asynchronously in the background.
ReqIF Import HistorySince codebeamer 9.4 and newer, the history of all ReqIF imports into a project is available, 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 codebeamer 9.4 and older, Export As ReqIF archive opened a submenu where the user had to choose between
Since codebeamer 9.5, this submenu no longer exists.
Instead, the export Destination can be chosen in the upcoming dialog:
When creating a new destination, the default configuration according to the selected destination type will be shown.
If the data has already been exported as ReqIF (from this or another project) and the export configuration saved into a file, that configuration can also be Load-ed and re-used. It is not necessary to [Save] the configuration to a file manually as codebeamer 9.5 and newer automatically remembers the export configurations for all ReqIF destinations.
To change the default value of ReqIF Export, see You must login to see this link. Register now, if you have no user account yet.. Select project baseline to exportIn codebeamer 21.04 and older, only the current project data (Head Revision) can be exported.
Select project contents to exportOnly export data that the intended Destination system should see and can handle.
Select the tracker to export:
To preserve the (folder) hierarchy upon export, check Preserve hierarchy (since codebeamer 9.5 and newer):
The user also needs to select, which attributes/fields of the selected tracker items should be exported:
If an embedded table field is selected for export, it also needs to be selected which of the table's columns should be exported.
then use the References selector:
This way, codebeamer makes sure, that also the relations between the related/referring items are properly exported:
Additionally, the user can choose to export specific associations of the selected items, e.g. the dependencies of the Test Cases:
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. Respond to a previous importWhen selecting the Source of a previous ReqIF Import as the Destination for a new ReqIF Export, and there has not been a previous export to this Source/Destination yet, then the export is automatically configured to be the reverse of the last/previous import from that Source:
then, since codebeamer 21.04 and newer, can choose to
which means
Asynchronous ReqIF export in backgroundSince codebeamer 21.09 and newer, ReqIF exports are executed asynchronously in the background.
The exported ReqIF archive must be downloaded until the specified deadline (typically within the next two workdays) and is no longer available after that deadline.
Notes:
ReqIF Export HistorySince codebeamer 9.5, 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. ReqIF Export from Working-SetsSince codebeamer release 22.10-LTS (GINA), the ReqIF export options have been extended to Working-Sets. codebeamer allows the exportation of work items (trackers, items, fields, references) based on Working-Sets on export level.
A Working-Set selector box has been added to the Select project content to be exported as ReqIF overlay. The relevant Working-Set is to be chosen from the dropdown list:
The selected Working-Set with all its configurations and content is exported.
By clicking on the ReqIF destinations... ► Settings, the ReqIF export history indicating the latest exported Working-Set is displayed on the Export overlay in read-only mode:
See also: Working-Sets Tracker View-Based ReqIF ExportSince codebeamer release 22.04 (FELICITY), tracker contents can be filtered by applying different tracker views during exporting to ReqIF.
It is possible to select from the available
for each tracker included in the ReqIF export.
In case of intelligent views, the export only contains the initial level of items. The hierarchy defined by the view is not included.
Selecting views with Show Children, Show Ancestor Items or Show Descendant Items options enabled, the parent/children items are also included in the ReqIF export. Each item is included once, without showing any hierarchy between them.
To choose from the tracker views available,
To avoid exporting wrong items, turn to the relevant Administrator for the correct write permissions of the used views.
See also: Tracker Views
Loading Saved ConfigurationsWhen loading a previously saved ReqIF export configuration with views,
Configurable ReqIF Base IDSince codebeamer 21.09 (EMMA) release, the ReqIF Base ID can be configured to ensure that valid ReqIF files are generated following a Host ID change.
This function is not supported since codebeamer release 22.10-LTS (GINA).
ID Definitions
OperationSince codebeamer 21.09-SP5 (EMMA) and newer, the ReqIF instance identifier is read from the ReqIF section in the Application Configuration. E.g.: "ReqIF" : { "identifier" : "CB-LIN-54-14-F3-67-2B-40" }
Porting
See also: Application configuration |
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, furthermore helps us to 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. For more information about the cookies we use, please visit our Privacy Policy.Your preferences will apply to this website only.