Introduction
Practitioners often need to know where a particular element, or set of elements, is used within a customer project. For
example:
-
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.
-
As a reviewer for a specific component configuration, I need to check that the work products relating to the
component configuration are consistent
-
As a reviewer for a specific component configuration, I need to check that all the work products relating to the
specific variant are consistent
-
As a project manager, I am considering deferring further development on this stream, so I need to know what
configurations depend on it
-
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:
-
Which component configurations are used to define this product variant?
-
What configurations exist for this GC component?
-
What are the configurations of this GC component for this branch (variant)?
-
Which other configurations use this GC baseline or stream?
-
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
|