Most
development streams over the life of a project advance from predecessor baselines
to descendant baselines that integrate work performed in the project. Streams
are usually allowed to advance (see Advance rebase operation).
Development streams D1 and D2 deliver work (activities a1, a2, a3, b1, b2,
and b3) to the integration stream. In the integration stream, a descendant
baseline PA.BL2 is made to capture the work. To include the new work
in their configurations, streams D1 and D2 rebase to descendant
baseline PA.BL2.
Restrictions on advancing rebase operations occur when the descendant baseline
is not from the parent stream. In a rebase operation, you can select a baseline
from any stream. For example, you can select a baseline from a stream that
is a descendant of the stream foundation that is in a stream that is not its
parent stream. Thus, a development stream could rebase to a baseline created
in a sibling development stream. Therefore, the rebasing stream could acquire
work that has not been delivered to the parent stream. If several streams
were allowed to deliver the same work, there would be confusion during the
merge operation. (Alternative target delivery is a special case, and a project
manager can set policies to allow a stream to accept changes that did not
originate in the delivering stream).
A common example of an advance rebase operation occurs when a project uses
a test stream (see A test stream
to stabilize a baseline).
The project integrator creates the baseline PA.BL1 for a milestone.
The work to stabilize the code in the baseline is done on the test stream DS that
is dedicated to this task. Because the project A integration stream
can have more activities delivered as the baseline PA.BL1 is being
tested, the integration stream is not used. The test stream is isolated from
deliver operations ongoing in the parent stream, the project A integration
stream.
Although the PA.BL1.S baseline is a descendant of their current
foundation baseline PA.BL0, development streams like D1 are
not allowed to rebase to it. If this rebase operation were allowed, the development
streams could deliver the build stabilization work before stream DS does.
Therefore, the test stream DS must first deliver its work in the baseline PA.BL1.S to
the parent of the development streams, the project A integration stream.
When the work from test stream DS is contained in the parent stream
and the baseline that contains that work is ready to be released, the project
integrator can recommend the baseline. Then the development streams can rebase
to the baseline PA.BL1.S from the test stream.
Tip: The deliver operation changes the relationship between baselines
in a stream. In A test stream
to stabilize a baseline,
when a new baseline PA.BL2 is created in the project A integration
stream, it becomes a descendant of PA.BL1 as with any baseline, but
it also becomes a descendant of PA.BL1.S from the test stream. Because
baseline PA.BL1.S was delivered to the integration stream, baseline PA.BL2 contains
baseline PA.BL1.S, which is a requirement of the predecessor and descendant
relationship.