RIF meets ReqIF
ReqIF is the new OMG standard for requirements interchange. RIF is the predecessor to it and already supported by many tools like DOORS. RMF delivers both the standards as Ecore models. However, there are quite a few differences between the two standards making them type incompatible.
The main differences lies in,
1. Element naming.
For example, the element RIF is now called REQIF, SpecHierarchyRoot is now Specification and so on.
2. More specification types.
If you know the RIF model already, you would know the concept of SpecTypes. This element allows creation of new types. In RIF and ReqIF, SpecObjects (the instance values) and SpecRelations (relations between instances) are typed. However, in RIF, both refer to the same SpecType element, where as ReqIF has different types called SpecObjectType for SpecObject, SpecRelationType for SpecRelation and some more new types.
3. More attribute definition and value types.
RIF had only a single attribute definition type called AttributeDefinitionSimple. ReqIF extends this for different the different data types as AttributeDefinitionInteger, AttributeDefinitionReal, AttributeDefinitionString etc. Same for values as AttributeValueInteger, AttributeValueReal, AttributeValueString etc.
4. RIF XML uses no XML attributes where as ReqIF uses a lot of them.
For example, IDENTIFIER is an XML element in RIF whereas it is a XML attribute in ReqIF.
This brings us to the question – how do I convert my existing RIF files to the new ReqIF format? Considering the fact that there are a lot of industry samples in RIF format, we thought of writing a RIF to ReqIF converter. The transformer takes in a RIF file and transforms it into a ReqIF, retaining all its contents. You could also do an in-memory transformation between the two models.
This is how a RIF source than we passed to our converter looks like after transformation.