Many tools support requirements traceability in one or the other way – may it be...
Depending on their respective focus, these tools are providing various means to analyse trace data. They are offering coverage reports, impact analyses, data extraction, etc. In most cases, these analyses are of limited flexibility or cannot be adapted to specific user requirements at all.
With YAKINDU Traceability (YT), we pursue a different approach. Besides the usual means, we provide a flexible query language, facilitating custom ad-hoc queries. As this query language just has been integrated in YAKINDU Traceability, it’s definitely the feature of the month May ‘17.
This blog post illustrates the anatomy of such queries. For further information, we linked two video tutorials and another blog post that are illustrating how a simple query can provide a complete requirements traceability matrix.
The following screenshot illustrates the anatomy of a query:
Let’s have a look at the details:
The query’s name "Count requirements per subsystem for October"
and its description "No of requirements per subsystem for October release"
are useful to quickly identify a certain query, differentiate it from other queries, and to recognize and understand what it does, without the need to look into and understand the subsequent query definition. This speeds things up e.g. when it comes to picking a certain query for execution.
The source
statement specifies the so-called query function. In this example it is the allArtifacts
function. It lists all artifacts of a given type, regardless whether they are linked or not. Similar to the database query language SQL, you can filter, group, and order the results of a query function by specifying a where
clause, a groupBy
clause, or an orderBy
expression.
The range of YAKINDU Traceability's query functions spans a broad range, from simple ones such as the above-mentioned allArtifacts to powerful and complex ones like tracesFromTo. The latter finds all chains of traceability links between two given artifacts types. Currently (May 2017), YT provides the following query functions:
Query function | Description |
---|---|
allArtifacts | Finds all artifacts of a given type. |
allArtifactTypes | Lists all artifact types as specified in the YT configuration. |
allTraceLinks | Lists all links for a given type. |
artifactsWithoutTraceFromTo | Finds all artifacts of one type that have no traces to any artifact of a second type. |
linkedArtifacts | Finds all artifacts of a given type that have at least one link. |
notLinkedArtifacts | Finds all artifacts of a given type that have no link. |
tracesFromTo | Finds all traces (i.e. chain of links) between two artifact types. |
traceMatrixFor | Calculates all possible traces between two artifact types, while also considering incomplete or interrupted traces. |
reduceBy, intersect, union | Operations facilitating the combination of rows of results sets (with the usual meanings as in set theory) |
join | Joins the columns of results sets (similar to a database join). |
Please find a detailed list of query functions in the YAKINDU Traceability's online documentation.
From a technical point of view, these functions help you to specify a depth-first search on the graph of linked artifacts, without requiring any knowledge of graph theory.
There are several ways to execute queries and to analyse the results. You can execute them by a simple double-click in the YAKINDU Traceability Query Overview. Alternatively, use a wizard to export query results to Excel. Or configure YT to execute queries and export their results periodically on your continuous integration server. Our video “Smart trace data analysis with YAKINDU Traceability” illustrates how easy it is to analyse your trace data with YT.
The YAKINDU Traceability query editor does not only provide templates for complete queries which you only have to be parametrized, it also provides smart proposals for these parameters. As the look and feel of smart editor support is hard to describe in writing, we did so in the video “Query traceability data efficiently with YAKINDU Traceability” instead.
The query language does not only close a gap of existing approaches for trace data analysis, it also makes common tasks more facile. My blog post about requirements coverage shows how easy it is to create a complete requirements traceability matrix with a simple query.
You now want to learn more about YAKINDU Traceability? Then check our website!