Components (DCs) can use one another and, therefore, depend on one another. For more information, refer to Public Parts. A component can depend on any number of components, and a number of components can depend on one single component.
Dependencies between DCs are not static and may change over time. A component may declare new dependencies or delete existing ones.
In general, dependencies between components are only allowed at the same hierarchy level, for example, top-level DCs may depend on each other, or DCs that are included in the same parent component.
In the following figure, dependencies are depicted as arrows:
Dependencies between DCs on the same hierarchy level.
Dependencies of a parent DC are not automatically inherited to child DCs. Child components are not allowed to declare dependencies to their parent component. In contrast, a parent component can use its child components.
All of the following conditions must be fulfilled, before a DC can use another:
? Both DCs belong to the same software component or the software component of the using DC explicitly declared the use of the used DC.
? The used DC is a top-level DC or a direct child component of the using DC, or the parent DC of the used DC is a predecessor of the using DC.
? There is no exclusion in the access control list of the used DC for the using DC.
? The DC types are compatible. There is one exclusion criterion: A build-infrastructure DC must not be used by a normal DC.
The figure below shows allowed and not allowed dependencies, based on the rules stated above:
Dependencies between components: software component SC 1 uses SC 2. The diagram shows, which development components the DC G is allowed to use. The ones that can be used by DC G are displayed in green, the others in red.
To use a DC, use dependencies must be created.