In a value hierarchy, consumer needs and value objects are related to show that (1) a consumer need is satisfied by obtaining a (series of) value object(s), or that (2) in order to obtain a value object, another (series of) value object(s) is needed. By relating needs and value objects, a hierarchy emerges. The hierarchy starts with one or more consumer needs. Considering a single consumer need, satisfaction of such a need depends on obtaining one or more value objects.
Dependency elements are used to model the following:
- via which (alternative) value interfaces an actor transfers value objects to satisfy a consumer need;
- via which value interfaces an actor obtains value objects to be able to provide other value objects via other value interfaces of that same actor; when not to consider additional value transfers anymore, to state model boundaries.
Various kinds of dependency elements exist: the direct relation, the AND dependency, the OR dependency, the consumer need, the boundary element, and the value interface. The consumer need and the value interface are speical elements and discussed separately, the others will be discussed below.
In case a need depends for its satisfaction on just a single value object, the need and object can directly be related. The need (e.g. a need to travel from Amsterdam to Paris) requires then precisely one value object (e.g. a train trip). Similarly, if to obtain a value object only one other object should be obtained in turn, these objects can be related by a direct relationship: the one object is directly dependent on the other object. However, most cases are somewhat more difficult; then a need depends one more than one value object, or alternative value objects can be chosen from.
AND/OR dependency elements
This models that, to satisfy a need, all (in case of an AND element) objects must be obtained. An AND dependency element can also be used if a value object, rather than a consumer need, requires a number of other value objects.
An OR dependency element represents that to satisfy a need, one value object out of a set of alternative value objects must be selected. Again, an OR dependency element can also be used if, to obtain a value object, another value object needs to be obtained, which can be selected from a number of alternative value objects
|proportion||each port attached to an AND or OR dependency element has a proportion which indicates the relative ratios of the incoming and outgoing ports respectively.|
A direct relation is represented using a dashed line.
An OR is represented using a triangle with one port at the tip and multiple ports on the side of the triangle.
An AND is represented using a short line with one port on one side and multiple ports on the other side.
A dependency element can have multiple dependent value objects and one dependee, or multiple dependees and one dependent object. In case an AND/OR element has one dependee and multiple dependent value objects, we call such a dependency an AND/OR fork; in case an AND/OR has multiple dependees and just one dependent value object, such a dependency is an AND/OR join.
As an example, consider the following Figure:
The figure represents that a consumer need ‘transportation from Amsterdam to Paris’ can be satisfied by: (1) a ‘taxi trip’ (e.g. from your home to the railway station), and (2) a ‘long distance trip’, and (3) ‘food’ (during a long trip, you want to eat something). Additionally, a ‘long distance trip’ can be an ‘air trip’ or a ‘train trip’.
First, an AND dependency relation exists between ‘Transportation from Amsterdam to Paris’ and ‘Food’, ‘Long distance trip’, and ‘Taxi trip’. It models that in order to satisfy the need ‘Transportation from Amsterdam to Paris’, all the value objects ‘Food’, ‘Long distance trip’, and ‘Taxi trip’ are required. These three objects may be offered by different parties. The figure above shows also an OR-dependency element. A ‘long distance trip’ can either be an ‘air trip’ or a ‘train trip’.