The root of the project is a special object. It is the only object that has no parent, i.e. it is not contained within any other object. All the other objects are contained within one or several parents. When an object contains another, we call this a parent-child relation. These parent-child relations define the object hierarchy. The object hierarchy can be visualized in a vertical manner in the treeview and in a horizontal manner in the Internal Block Diagram.
Since we have now defined parent-child relations, we can also grasp the concepts of ancestors, descendants, children, siblings, etc. when talking about objects. For example, we can say that no object can be its own ancestor. We could also say that the root is the ancestor of all the other objects and that all the objects are descendants of the root.
Relations
There are basically three types of parent-child relations:
- An element relation: the parent object contains the child as a non-flow object (graphically represented as a container).
- A generic flow relation: the parent object contains the child object as an input or output (i.e. consumed or produced) flow.
- A bidirectional flow relation: the parent object contains the child as a bidirectional flow (both an input and an output at the same time).
More information on flow relations can be found in Flows.
Multiple Parents
As already stated, all objects (except the root) must have one or several parents. The most common case of an object with multiple parents is undoubtedly a flow: a flow is typically produced by one parent object (its producer) and consumed by another (its consumer). Another example could be to have an object of type Function with two parents: one of the parents is a physical component (containing a reference to this function) in the physical architecture whereas the other is a higher-level function in the functional architecture part of the system.
When an object has multiple parents, it is present at different locations in the object hierarchy (which can be visualized in the treeview and the Internal Block Diagram). Note that if an object is present at several locations, this must also apply to its children since all the references to the object must be identical. However, as the projections as based on different filters, the children might be invisible in a given view.
You can find the parents of an object by using the Location feature in the right-click menu of an object.
Children
The possible types of child objects are defined in the meta-model by an