Finding Where Configurations are Used
This guideline describes the primary "find where used" scenarios.
Relationships
Related Elements
Main Description
Introduction

Practitioners often need to know where a particular element, or set of elements, is used within a customer project. For example:

  1. As an auditor, I need to know which specific configurations of components and related documentation are used to define and make a particular variant of a product.
  2. As a reviewer for a specific component configuration, I need to check that the work products relating to the component configuration are consistent
  3. As a reviewer for a specific component configuration, I need to check that all the work products relating to the specific variant are consistent
  4. As a project manager, I am considering deferring further development on this stream, so I need to know what configurations depend on it
  5. As a requirements engineer, I have been asked to change a requirement, so I need to know which variants use this requirement so that I can assess whether they will be impacted by the proposed change  

These use cases could be satisfied by asking the following questions:

  1. Which component configurations are used to define this product variant?
  2. What configurations exist for this GC component?
  3. What are the configurations of this GC component for this branch (variant)?
  4. Which other configurations use this GC baseline or stream?
  5. Which configurations (and hence which products or product variants) use this version of this requirement (or test case or design element ...)?

Facilities that can be used to answer these questions include:

  • GCM UI
  • RDNG, RQM, RDM UIs
  • Report Builder (simple reports may address the first three questions; custom SPARQL queries would be needed for most of the rest)
  • RELM views (both simple views created from artifact elements and ones using custom SPARQL queries)

The following sections will present the recommended methods for each of the previous questions.

1. Which component configurations are used to define this product variant?

Tool: GCM

The user can explore the GC hierarchy in the GCM application UI. Here is a SPARQL 1.1 query that finds all the configurations that are recursive children of configuration:

https://localhost:9443/gc/configuration/2:

prefix dcterms: <
http://purl.org/dc/terms/>
prefix oslc_config: <
http://open-services.net/ns/config#>

SELECT ?configuration ?title WHERE {
<https://localhost:9443/gc/configuration/2
> (oslc_config:contribution/oslc_config:configuration)+ ?configuration .
?configuration dcterms:title ?title .
}

In this query, note that the URI for the original configuration forms the first part of the "WHERE" clause, and would need to be changed for a different configuration. The "SELECT" clause will retrieve the URI and the configuration title for each child configuration found.

Tool: RELM

By selecting the all-data endpoint of LQE, the user can show links from artifacts to configurations, as shown below. If the user selects a specific context, which is the usual case, then RELM will only display the version resources belonging to that context.

Figure 1: RELM view linking artifact to configuration


2. What configurations exist for this GC component?

Tool: GCM

The user can see the streams for a component in the GCM UI. Users can see the baselines created from a particular stream in the GCM UI. We recommend that users identify variants in the names of configurations as this makes the view more meaningful.

3. What are the configurations of this GC component for this branch (variant)?

Tool: GCM

The user can see the streams for a component in the GCM UI. Users can see the baselines created from a particular stream in the GCM UI. We recommend that users identify variants in the names of configurations as this makes the view more meaningful.

4. Which other configurations use this GC baseline or stream?

Tool: GCM

The GCM UI provides a finduse capability. Users can select a configuration and use the Find Where Used action to find which GCs use that configuration, as shown below:

Figure 2: Results of Find Where Used

5. Which configurations (and hence which products or product variants) use this version of this requirement (or test case or design element ...)?

Tool: Report Builder

Here's a sample SPARQL query for finding the versions of an artifact with a specified URI in use any configuration:

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX oslc: <http://open-services.net/ns/core#>
PREFIX oslc_config: <http://open-services.net/ns/config#>
SELECT ?config ?config_title ?config_created ?artifact_id ?artifact_short_id ?artifact_title ?artifact_version_uri  WHERE {
   ?config a oslc_config:Configuration .
   ?config oslc_config:selections ?selections .
   ?selections oslc_config:selects ?artifact_version_uri .
   ?config dcterms:created ?config_created .
   ?config dcterms:title ?config_title .
   ?artifact_version_uri dcterms:isVersionOf <https://example-server.com:9602/rm/resources/_62714bffd655457e8b2e2b376734660a> .
   GRAPH ?artifact_version_uri {
      ?s dcterms:title ?artifact_title .
      ?s dcterms:identifier ?artifact_id .
      OPTIONAL {
           ?s oslc:shortId ?artifact_short_id .
      }
   }
}

This query will return the title, identifier and (if available) the short identifier for each version of the concept resource that exists in the different configurations they reside in (the URI of the configuration, configuration title, creation date). For example, for QM Testcase 40, this would be “40”.

For DNG would you get the concept URI of a resource by retrieving the permalink for a particular version of that resource and strip out the configuration context.

Here's the permalink for this version: https://example-server.com:9602/rm/resources/_62714bffd655457e8b2e2b376734660a?oslc_config.context=https%3A%2F%2Fexample-server.com㪖02%2Frm%2Fcm%2Fstream%2F_XjCCYLk5EeWXHeCbzSr93w

In this, the server is “example-server.com”, the port is “9602”, the internal ID is “_62714bffd655457e8b2e2b376734660a” and the configuration context is the stream on that server identified by “_XjCCYLk5EeWXHeCbzSr93w”

Remove the configuration context to leave: https://example-server.com:9602/rm/resources/_62714bffd655457e8b2e2b376734660a

And replace the URI in the "?artifact_version_uri dcterms:isVersionOf <>" clause, as above.

This query would be directed to the all-data endpoint, so that all selections and requirement graphs were possible solutions. If run in a configuration-specific endpoint, that configuration itself should be seen as the solution if and only if the identified requirement were in that configuration. No other configurations would be seen. For example, for QM, there is no icon to retrieve the permalink of an artifact, as there is for DOORS Next Generation. Users must work this out manually from the structure:

https://<host>:<port>/<context root>/oslc_qm/contexts/<project area UUID>/resources/<resource type>/<resource item ID>

Where resource type is one of the following:

  • com.ibm.rqm.planning.VersionedTestPlan
  • com.ibm.rqm.planning.VersionedTestCase
  • com.ibm.rqm.planning.VersionedExecutionScript
  • com.ibm.rqm.execution.TestcaseExecutionRecord
  • com.ibm.rqm.execution.ExecutionResult
  • com.ibm.rqm.requirement.ReqProRequirement
  • com.ibm.rqm.planning.VersionedTestSuite,com.ibm.rqm.planning.TestSuite
  • com.ibm.rqm.execution.ExecutionResultGroup
  • com.ibm.rqm.execution.TestSuiteExecutionRecord
  • com.ibm.rqm.planning.ExecutionElement2
More Information