It's all about the answers!

Ask a question

DNG Link Constraints cannot be imposed on artifact types with URI defined

Deepa Kallayyanamath (11) | asked Dec 16 '21, 8:54 a.m.
I have four components in DNG namely A,B,C,D. All the four components have artifact type "Requirement" with URI defined.
Satisfaction link type should be created between these components in the below manner.
1. (Satisfies link, inward link)
 A <- B <- C <- D
2. (Satisfied By link, outward link)
 A-> B -> C -> D
No other link types in any direction (except above mentioned) must be allowed.

Now I have created link constraint in all the four components for "Satisfaction" link type.
But this setup is allowing me to link satisfaction links between all the components,
for example, A <- C, D -> A. These links should not be allowed.

Is there any way to restrict this linkage?
Also I noticed, this linkage can be controlled if the URI for artifact type is not defined. But this is not possible to do in my case.

One answer

permanent link
Ian Barnard (1.2k613) | answered Dec 17 '21, 3:23 a.m.
edited Dec 17 '21, 8:40 a.m.

Using distinct artifact types is useful to reflect the way requirements are used - Stakeholder Requirements, System Requirements, Software Requirements, etc. It's also possible that these types might each have some purpose-specific  attributes which having a single global definition for "Requirement" would make unwieldy if that definition had to have a superset of all these attributes.

I know in DOORS Classic every object in a module is a requirement with the same attributes - but DOORS Next breaks away from this to expand what you can do by allowing you to create a different artifact type for each purpose, and mix-and-match these in a module as needed, although typically you wouldn't mix different requirement types in the same module, this approach makes it easy to clearly distinguish requirements from e.g. heading and information, and to populate each of these different types with only the attributes that they need.

Using different artifact types (each with a unique URI) alongside link constraints allows you to control where and in which directions links can be created. AFAIK that's the only way you could achieve the control you want in terms of preventing undesirable links being created.

Using absence/presence of a URI, or e.g. a different URI for Requirement in different components, in order to prevent linking doesn't sound like a good idea at all; it makes superficially similar definitions all called Requirement actually into different types which could impact on reporting.

There's some really useful guidance on managing the DOORS Next Generation type system within and across projects here

When you're applying/modifying URIs on artifact types and on Link Types, don't forget to delete/recreate link constraints which use the changed definitions, and when linking across components/project to make identical updates at both ends.


Your answer

Register or to post your answer.