XML Tracing Report
Often users want to further process the results generated by OpenFastTrace to create statistics about requirements, to add the results to a database or further analyze the results. OpenFastTrace therefore provides a reporter that exports all relevant collected information into a single XML file that can further be processed by other tools.
The XML exporter is called aspec reporter. aspec in this case means augmented specobject. An aspec report
can be generated by calling OpenFastTrace in the following way (replacing <version> with the actual version):
java -jar openfasttrace-<version>.jar trace -o aspec -f requirements.xml requirements
OpenFastTrace needs to be executed with the command trace to activate the reporter. The aspec report is selected
with that parameter -o aspec. -f allows to provide the name of the output file into which the XML report is
generated.
The aspec reporter generates an entry per processed requirement:
- all relevant parameters of the requirement
- information if a requirement is successfully covered by other requirements
- information if all requirements covering a requirement are themselves successfully covered
- list of requirements covering a requirement
- list of requirements linked by a requirement
The XML output roughly has the following structure
<specdocument>
<specobjects doctype="arch">
<specobject>
<id>arch-my-architecture-requirement</id>
...
</specobject>
...
</specobjects>
...
</specdocument>
<specdocument> is the toplevel XML element. Beneath the <specdocument> one <specobjects> entry can be found for
each requirement type found by OpenFastTrace. The element <specobjects> contains all requirements matching the type
named in <specobjects>. A <specobject> XML tag wraps each requirement.
A <specobject> entry has the following form:
<specobject>
<id>arch-my-architecture-requirement</id>
<version>1</version>
<shortdesc>The title</shortdesc>
<status>approved</status>
<sourcefile>architecture.md</sourcefile>
<sourceline>134</sourceline>
<description>Yet another architecture</description>
<coverage>
...
</coverage>
<covering>
...
</covering>
<dependencies>
...
</dependencies>
</specobject>
<id> and <version> provide ID and version of the requirement. In OFT terminology the term revision is equal to
the version used in the aspec report. <shortdesc> and <description> provide title and description of the requirement.
<sourcefile> and <sourceline> are the name and line number of the original file from which the requirement has been
imported. <coverage> contains more information about the coverage of the requirement and lists other requirements
covering the requirement.
<covering> contains requirements that have been marked as dependency. If parts of the information described above is
not available, the corresponding XML element is omitted in the generated report.
The <coverage> XML element has the following form:
<coverage>
<needscoverage>
<needsobj>dsn</needsobj>
...
</needscoverage>
<shallowCoverageStatus>COVERED</shallowCoverageStatus>
<deepCoverageStatus>UNCOVERED</deepCoverageStatus>
<coveringSpecObjects>
...
</coveringSpecObjects>
<coveredTypes>
<coveredType>dsn</coveredType>
</coveredType>
<uncoveredTypes>
<uncoveredType>impl</uncoveredType>
</uncoveredTypes>
</coverage>
The <coverage> elements provide the following sub elements:
<needscoverage>: List of requirement types that are required to cover the requirement<shallowCoverageStatus>:COVEREDif for all necessary requirement types, another valid requirement covers the requirement. Valid in this case also means that the covering requirement has statusapproved.UNCOVEREDif not all required requirement types were covered successfully.<deepCoverageStatus>:COVEREDif all request requirement types are successfully covered by other requirements that are themselves successfully covered transitively.UNCOVEREDif the requirement is not successfully covered transitively.<coveringSpecObjects>: The<coveringspecobjects>element contains a sub element for each covering requirement.<coveredTypes>: List of requirement types that are shallowly covered.<uncoveredTypes>: List of requirement types that are not shallowly covered.
The element <coveringSpecObjects> describes all covering requirements:
<coveringSpecObjects>
<coveringSpecObject>
<id>dsn-requirement</id>
<version>1</version>
<doctype>dsn</doctype>
<ownCoverageStatus>COVERED</ownCoverageStatus>
<deepCoverageStatus>COVERED</deepCoverageStatus>
<coveringStatus>COVERING</coveringStatus>
</coveringSpecObject>
...
</coveringSpecObjects>
The element <coveringSpecObjects> describes each requirement that provides a coverage to the enclosing requirement. Each covering requirement is described via the element <coveringSpecObject>. <id> and <version> provide the requirement ID and version of the requirement. <doctype> provides the requirement type of the requirement. <ownCoverageStatus> describes if the covering requirement is shallowly covered. A shallowly covered requirement is marked as COVERED.
An uncovered requirement is reported as UNCOVERED. <deepCoverageStatus> reports a transitive covered requirement with value COVERED and an uncovered requirement with value UNCOVERED. If the covering requirement itself transitively covers the enclosing requirement, <coveringStatus> reports the value COVERING.
If the covering requirement does not cover the enclosing requirement <coveringStatus> reports UNCOVERED. If the covering requirement references the enclosing requirement with a wrong version coveringStatus reports COVERING_WRONG_VERSION. If the covering requirement is not expected to cover the enclosing requirement (e.g. it has an unexpected requirement type), the <coveringStatus> is reported as UNEXPECTED.
A requirement described by the XML element <specobject> lists all other requirements that it covers in the element <covering>:
<covering>
<coveredType>
<id>arch-requirement</id>
<version>1</version>
<doctype>arch</doctype>
</coveredType>
...
</covering>
For each covered requirement <covering> includes a <coveredType> element. A <coveredType> lists the referenced
requirement ID with the element <id>, the requirement version with <version> and the requirement type with the
element <doctype>.
If a requirement references other requirements without contributing to requirement coverage then all these references
are described by the element <dependencies>:
<dependencies>
<dependsOnSpecObject>
<id>arch-requirement</id>
<version>1</version>
<doctype>arch</doctype>
</dependsOnSpecObject>
...
</dependencies>
The <dependencies> element provides a <dependsOnSpecObject> element for each referenced requirement. The
<dependsOnSpecObject> element lists requirement ID with the element <id>, the requirement version with <version>
and the requirement type with the element <doctype>.
← Report Summary • ↑ Reference • OFT API →