A language to analyse trace data efficiently

Many tools support requirements traceability in one or the other way – may it be...

  • a test management tool that can link “test cases” to “requirements”,
  • an ALM tool supporting – within its own data – traceability for the whole lifecycle of a requirement, or
  • a dedicated traceability tool, which, like the ALM tool, also covers the whole requirements lifecycle, but, unlike the ALM tool, is not limited by tool borders and can integrate a variety of different data types and tools.

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.

Anatomy of a query

The following screenshot illustrates the anatomy of a query:

yakindu-traceability-query-anatomy.png

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.

Query functions

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.

Executing queries

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.

undefined

Editing queries

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.

undefined

Efficient trace data analysis

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!

Learn more about YAKINDU Traceability

About Boris Holzer

I've been working as (technical) project manager in several business domains. I like the power of language engineering and every other application that makes development easier and improves quality. Since 2014, I'm in charge of YAKINDU Traceability.