Tags and keywords
A block Client
has a reference to an abstract contract block I_A
, which has an "output" value property o
.
The Parametric diagram shows that value property o
bound to the constraint property o
with a BindingConnector o-o
(which is named to make tracking of redefinitions easier) on a constraint property c
of abstract type ConstraintA
.
The aim of the game is to replace ("inject") various sub-blocks of I_A
at run time that carry concrete variations with specific concrete constraint blocks compatible with ConstraintA
.
The constraint {o=null}
is merely a placeholder; concrete ConstraintBlock variants will have more constraint parameters and constraint equations that use them.
SysML constraint parameters have no intrinsic sense of input/output direction; it is only the binding of known (input) and unknown (output) value properties to the parameters that give them any sense of input/output, and this can vary for each binding usage context.
The SysML DirectedFeature approach for the value properties does not quite work here, it does not really make sense to have a reqd
value property o
on Client
. For exasmple, what happens if it also depends on many "outputs" from many providers, all with the same value property name o
?
One can use the UML derived property indicator '/'. However, when working with SysML Parametrics, this simple Webel Best Practice tip can really help:
You might be tempted to use an InterfaceBlock for I_A
, noting that:
I_A
.