Source: Webel IT Australia ( Darren Kelly)
The attached image was initially for analysis of
In UML2.5.1 the client(s) and supplier(s) of an Abstraction (including Trace stereotype) are always NamedElements.
There are no additional constraints placed on the type of the client or supplier of the SysML Refines.
The description of the operation getRefines() restricts the return elements to AbstractRequirement[0..*]
getRefines (in ref : NamedElement) : AbstractRequirement [0..*]
The query getRefines() gives all the requirements that are suppliers ("to"end of the concrete syntax) of a «Refine» relationships whose client is the element in parameter. This is a static query.
(Typos in the above are addressed in a separate issue report.)
But the OCL static query does not, and effectively returns NamedElement [0..*]
As examined under
SYSML17-15, all of the following are currently valid (see also attached image):
- Any NamedElement refines a Requirement.
- A Requirement refines another Requirement.
- A Requirement refines any NamedElement.
- Any NamedElement refines another NamedElement.
Tools correctly implementing the static OCL query permit display (or callout) of getRefined() on any NamedElement.
It has to be decided whether:
Option1: The static OCL query should have the return type filtered to only AbstractRequirement (not preferred by this submitter)
Option2: Loosen the restriction on the description of the return type of getRefined() to the NamedElement[0..*] (preferred by this submitter)
While Option2 may seem to depart from the initial spirit of the SysML Refines extension within the context of Requirements, it is more consistent with the general UML use of Refines between any (in SysML a pair only) of NamedElements. If this is done, the description also need to be rewritten thus (including typo fixes and fix of plural vs singular):
The query getRefines() gives all the named elements that are suppliers ("to" end of the concrete syntax) of «Refine» relationships whose clients are the named element in parameter.
This submitter see no reason why the use of NamedElement[0..*] throughout can't be adopted. Modellers using SysML Refines for Requirement are not impacted, and modellers using Refines for more general purposes would still have access to the useful getRefines().
The above also implies moving Refines out of the Requirements chapter entirely (into, for example, Model Elements), with a description of the more general use of Refines, but also then describing the typical usage of it for Requirements refinement in the Requirements chapter.
Reported: SysML 1.6 — Thu, 23 Jan 2020 01:47 GMT
Updated: Thu, 23 Jan 2020 02:05 GMT
- SYSML17-15-refines-limitations.png 358 kB (image/png)