Dependency relationships in pure composite baselines

A pure composite baseline shows a loosely coupled dependency relationship between components (see the following figure).
Figure 1. Loosely coupled relationship between baselines

Baseline X.BL1 sits above two other baselines A.BL1 and C.BL3 that are aligned horizontally. Solid lines go from baselines A.BL1 and C.BL3 to baseline X.BL1.

The objects A.BL1 and C.BL1 are baselines on components A and C that are used to group directory and file elements. Baselines A.BL1 and C.BL1 are members of the composite baseline X.BL1 on the component X that was created without a root directory in a VOB. Baseline X.BL1 directly depends on baselines A.BL1 and C.BL1. However, the dependency between A.BL1 and C.BL1 is incompletely expressed. The components have to be used together, but it is not clear whether component A depends on C or component C depends on A.

You cannot change the existing dependency relationships in a composite baseline. To change dependency relationships, you must create a new baseline, a descendant of the changing baseline. For the composite baseline, you can add dependency references to new components (to create a new dependency relationship) or can drop dependency references to existing components (to discontinue a dependency relationship). For either operation, a new composite baseline is created.

At any time, a composite baseline can have member baselines added or dropped. Although it appears that components are manipulated to create composite baselines, the dependency relationship is made between baselines and not components. One might say that some components are dependant on other components, but the dependency relationships have a limited scope. The dependency relationship may last for the life of a particular project, but it might be different for other projects. The dependency relationships change over time as components are added or dropped. So the relationship must be made between versions of components, the baselines, rather than between the components themselves.

Because a component without a VOB root directory has no elements (and, therefore, no associated code), a new composite baseline created on such a component can only indicate changes in the dependency relationship. A composite baseline on a such a component is an aggregation of baselines.

When you use a pure composite baseline, a new baseline on component X only means that there was some change in the membership of the baseline. Using a pure composite baseline provides greater configuration flexibility than using a composite baseline on a component that has a root directory in a VOB. Use pure composite baselines whenever possible when you configure composite baselines.