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
- *.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)
After import in ReqIF Studio, 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
- EA standard Properties
- 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
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
- ReqIF#, open-source C# Library to read/write ReqIF via .NET
- ReqIF.academy
- OpenMCDF
References
- Tutorial
- Eclipse ProR
- Import & Export
- OMG Specification
- ReqIF.academy
- Helpers
- ReqIF in DOORS
- ReqIF Studio, the free ReqIF Editor & a lot more
- ReqIF Test data (Eclipse)
- Settings Import, Roundtrip, Export
- Tagged Values
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.
Ensure you have choosen a value. May be you define the enum in EA as a Tagged Value with a default 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