ReqIF_Export - Helmut-Ortmann/EnterpriseArchitect_hoReverse GitHub Wiki

ReqIF Export

hoReverse supports ReqIF export from nested EA Elements like Requirements. It's useful to exchange Requirements with e.g.

  • Customers
  • Suppliers
  • Test & verification

It supports:

  • Nested EA Requirements or other EA Elements
  • EA Linked Documents with graphics or Notes as simple text
  • Files defined in EA Elements
    • All files copied to *.reqifz
  • Files in EA Linked Documents
    • *.pdf
    • *.doc, *.docx
    • *.png
    • *.xls, *.xlsx
    • *.ppt, *.pttx
  • Tagged values for text, enumerations and calculated values like GUID
    • Don't use Tagged Values starting with 'ReqIF.'
    • No need to define EA standard Attributes like Creation, Modified, Created By, Modified By

Tested with:

  • Doors
  • ReqIF Studio (Eclipse)

See Export Tutorial, Helpers

EA: Requirement with Linked Document (*.rtf)

EA Linked Document

After import in ReqIF Studio, Overview

Overview

After import in ReqIF Studio, an EA Linked Document

Columns with ReqIF Studio

Embedded Files in EA

Embedded Files visualization in ReqIF Studio

General

See also the generated Tagged Value Types.

The hoReverse ReqIF Export Specification defines the ReqIF export rules.

With Export you creates a *.reqIfz file which contains all the Packages, Requirements, Tagged Values, Graphics, Files according to the Export Specification.

EA Structure

These principles cover Import, Roundtrip, Export.

  • EA Package An EA package is a ReqIF Specification. In Doors you would name it a Formal Module
  • EA Elements are the requirements. Usually, you would use nested Elements to denote the ReqIF hierarchical structure
    • EA standard Properties
      • Name: ReqIF.Name, the name or short text of the requirements
      • Notes: ReqIF.Text, the ReqIF Text in EA specification/note format
      • Linked Document: ReqIF.Text, the reqIF Text as *.docx with images and embedded files)
    • Tagged Values for ReqIF Attributes
      • EA Tagged Value Types are used for Enumerations (single-value: Enumeration, multi-value: CheckList)
      • If no Tagged Value type exists the content is XHTML formatted
  • Trash Package: A package to move deleted Requirements into to handle existing dependencies and to remove them later

Features

  • ReqIF (Version 1.0, 1.1, 1.2)
  • Export specification to easily re-run
    • Make groups to export a bulk of requirements with one click
  • Structured/nested requirements
  • Images and formatting from EA 'Linked Docucuments'
  • Attributes
    • Name
    • Notes
    • Linked Documents
      • You have to limit formats to the target ReqIF tool
      • Usually supported:
        • Paragraph: unordered lists, numbered lists, indentation
        • Text: bold, italic, underline, strike through, superscript, subscript, colour
      • hoReverse uses SautinSoft rtf to xhtml converter (developer license)
      • Tagged Values
        • Text
        • Enums (single + multivalue)
        • Generated from EA-Value

Calculated Tagged Value

Usually hoReverse maps EA Tagged Values simply to ReqIF Attributes with the same name.

  • Macros to auto update EA Tagged Values during export * = EA.GUID // set the EA GUID, for bi-directional traceability * = EA.Version * = EA.Phase * = EA.Status * = EA.Author * = EA.Created * = EA.Modified * = EA.Name * = EA.Type * = EA.Stereotype

Export Specification

See Settings

The export specification specifies:

  • Import
  • Roundtrip
  • Grouping of imports/roundtrips
  • Mapping of columns betweem EA and the Requirement Tool.

You can edit the Export Specification in Settings.json , chapter "Importer".

  // - Name:            The name in the EA menu to use this particular specification  
  // - Description:     Further description visualied as tooltip in the menu description
  // - ListNo:          hoReverse imports all specifications with the same ListNo with one click in the EA Menu
  // - InputFile:       The Path of the file to import, you have to use the extensions (*.csv, *.reqif, *.reqifz, *.xml) depending on the particular 'ImportType'
  // - PackageGuidList: The list of Guids for the packages to import into. The compressed *.reqifz format allows/demands one GUID for each imported 'Module'. The other file types only support one GUID/package.
  //                    ["{F199A750-C7BF-4625-A95D-F4C1AF8E4900}","{157D337C-13BB-4fc0-AA10-79F0A7587C99}" ],
  // - PrefixTaggedValueTypeList
  //                    List of prefixes to use for each ReqIF module like ["ArchA_", "ArchB_"]
  // - ObjectType:      The valid EA ObjectType to create for each imported row (e.g. 'Requirement').
  // - Stereotype:      The EA Stereotype to use for each imported row (e.g. 'Functional Requirement')
  // - ImportType:      'DoorsCsv'   = Doors *.csv import format for requirements (tested with Doors 9.6)
  //                    'DoorsReqIf' = DOORS reqif format (*.reqif, *.reqifz)
  //                    'ReqIf'      = ReqIf format (*.reqif, *.reqifz)
  //                    'XmlStruct'  = Structured xml for requirements, tests or so
  // - StatusNew:       The EA status property to set for new EA element
  // - StatusChanged:   The EA status property to set for changed EA elements (only supported for ImportType 'DoorsCsv')
  // - RtfNameList      List of ReqIF attribute names to put in EA Linked Document (support of graphics)
  //                    ["Object Text",],
  // - AttrNameList     List of ReqIF attribute names to put in EA Name
  //                    ["ReqIF.ForeignID", "ReqIF.Chaptername", "ReqIF.Text"],
  // - AttrNotes        The attribute name to import into the EA property 'Note', e.g. "Object Text"
  // - ExportMappingList Map EA Properties/Tagged Value to ReqIF Attributes  ["ReqIF.Text=EA.LinkedDocument;", "ReqIF.ForeignID=EA.GUID"]
  //                    - ReqIF.Name  (default: Name)
  //                    - ReqIF.Text  (default: Linked Document, Notes)
  //                    - ReqIF.ForeignID (default: EA.GUID)
  //                    - EA.LinkedDocument
  //                    - EA.GUID
  //                    - EA.Created
  //                    - EA.Modified
  //                    - EA.Version
  //                    - EA.Status
  //                    - EA.Author
  //                    - EA.Phase
  //                    - EA.Name
  //                    - EA.Type
  //                    - EA.Stereotype
  //
  // - AliasList        List of attribute names to import into the EA property 'Alias', e.g. ["RequirementID"] or ["ReqIF.ForeignID"]
  // - WriteAttrNameList List of attribue names to export back to the ReqIF file (Implementation of ReqIF Workflow). Only Tagged values of string or xhtml are allowed.
  //                    You can use variables to autfill fields. ["MyReferenceToEA=EA.GUID"]
  //                    hoReverse supports the following autofill fields:
  //                    - EA.GUID
  //                    - EA.Created
  //                    - EA.Modified
  //                    - EA.Version
  //                    - EA.Status
  //                    - EA.Author
  //                    - EA.Phase
  //                    - EA.Name
  //                    - EA.Type
  //                    - EA.Stereotype
  // - EmbeddedFileStorageDictionary
  //                    Dictionary/Folder of ReqIF embedded files to store. If blank or empty then don't store
  // - IdList"          Only "XmlStruct":
  //                    List of attribute names to use for ImportType "XmlStruct" as unique ID, e.g.  ["ForeignID"]
  "Importer":
  [

Example

See: Settings Import, Roundtrip, Export

Export three packages as ReqIF Module/Specification Tested with:

  • Linked Documents and Notes as main requirement part
  • Embedded Files like *.pdf
  • Tagged Values, also use for bidirectional traceability
{
         "Name"            :  "02: My ReqIF Export specification",
          "Description"     :  "My ReqIF Export specification",
          "ListNo"          :  "2",
          "ExportFile"       :  ""c:/Temp/ReqIF/export.reqifz"" ,
          "PackageGuidList" :  ["{0EB03D0A-CB11-49a4-895B-422876EFB567}"],
          "ObjectType"      :  "Requirement",
          "Stereotype"      :  "",
          "StereotypeDependency": "satisfy",
          "ImportType"      :  "DoorsReqIF",
          "StatusNew"       :  "Proposed",
          "StatusChanged"   :  "None",
          "RtfNameList"     :  ["ReqIF.Text"],
          "AttrNameList"    :  ["ReqIF.ForeignID", "ReqIF.Chaptername", "ReqIF.Text"],
          "AttrNotes"       :  "ReqIF.Text",
          "AliasList"       :  ["ReqIF.ForeignID"],
          "EmbeddedFileStorageDictionary" : "c:/Temp/ReqIF/Store/02/"
      }  

Search

Find embedded files

Select the package with requirements and run the Search. It shows you all Requirements with stored embedded files.

select o.ea_guid as CLASSGUID, o.object_type as CLASSTYPE, pkg.name As[Package], o.name As [Requirement], f.FileName as [File Name]
         from (t_object o
         inner join t_objectfiles f on o.object_id = f.object_id)
         inner join t_package pkg on o.package_id = pkg.package_id
where pkg.package_id in (#Branch#)
order by 3,4

Thanks

References

Naming conventiona

  • .reqif for a single ReqIF XML file
  • .reqifz for a ZIP achieve containing ReqIF files and additional files

FAQ

Tagged Values

Don't use the ReqIF standard attribute names starting with "ReqIF." like "ReqIF.ChapterName", "ReqIF.ForeignCreatedBy",

These ReqIF standard Attributes are created by hoReverse without defining them. If you define them hoReverse outputs one message and than skips these EA Tagged Values.

Empty enum value

You have to select a valid enumeration for the Tagged Value in the specified Requirement.

Enum error

Ensure you have choosen a value. May be you define the enum in EA as a Tagged Value with a default value.

Enum empty value

Glossary

  • Attribute (ReqIF) With Attributes a Requirement may contain additional information stored in the Attributes. In EA this are Tagged Values.
  • EA Tagged Values are a UML/SysML compliant method to provide additional properties to UML/SysML elements and connectors. Here we use it to define arbitrary ReqIF Attributes to exchange with other tools.
  • GUID Universally unique identifier used by EA to uniquely identify an object
  • MCDF Microsoft Compound Document Format (used by DOORS embedded files)
  • Package The Package which contains the requirements. In terms of ReqIF its the Specification or in DOORS the Module.
  • ReqIF Information of a file or folder with *.reqif or *.reqifz
  • ReqIF Requirements Interchange Format
  • ReqIF Roundtrip, often called ReqIF Workflow. The Standard how to exchange ReqIF requirements between two partners
  • ReqIF Standard of the OMG to exchange requirements between different tools, see OMG Specification
  • ReqIF Workflow: ReqIF workflow specifies how to exchange requirements between tools. Often called Roundtrip
  • ReqIF Tool: A tool that imports/exports ReqIF compliant XML documents
  • Requirements authoring tool: A tool to create and modifying requirements
  • Specification In ReqIF the container which contains the requirements. In DOORS it's named 'Module'.
  • SPICE Process Reference Model to assess process maturity.
  • Tagged Values UML/EA measure to add values to a classifier/requirement. For enumerations EA needs Tagged Value Types (Enum or Checklist).
  • Traceability