When this activity begins, implementation subsystems have been delivered to satisfy the requirements of the next (the 'target') build described in the Artifact: Implementation Model Document, recalling that the Implementation Model Document may define the need for several builds in an iteration. Depending on the complexity and number of subsystems to be integrated, it is often more efficient to produce the target build in a number of steps, adding more subsystems with each step, and producing a series of intermediate 'mini' builds - thus, each build planned for an iteration may, in turn, have its own sequence of transient intermediate builds. These are subjected to a minimal integration test (usually a subset of the tests described in the Implementation Model Document for this target build) to ensure that what is added is compatible with what already exists in the system integration workspace. It should be easier to isolate and diagnose problems using this approach.
The integrator accepts delivered subsystems incrementally into the system integration workspace, in the process resolving any merge conflicts. It is recommended that this be done bottom-up with respect to the layered structure, making sure that the versions of the subsystems are consistent, taking imports into consideration. The increment of subsystems is compiled and linked into an intermediate build, which is then provided to the tester to execute a minimal system integration test.
This diagram shows a build produced in three increments. Some subsystems are only needed as stubs, to make it possible to compile and link the other subsystems, and provide the essential minimal run-time behavior.
The final increment of a sequence produces the target build, as planned in the Implementation Model Document. When this has been minimally tested, an initial or provisional baseline is created for this build - invoking the Activity: Create Baselines in the Configuration Management discipline. The build is now made available to the tester for complete system testing. The nature and depth of this testing will be as planned in the Implementation Model Document, with the final build of an iteration being subjected to all the tests defined in the Iteration Test Plan.
As a build passes various levels of test, the associated baselines are promoted accordingly. This is done by invoking the Activity: Promote Baselines in the Configuration Management discipline. Promotion is a means of marking baselines as having passed or failed a certain level of testing. The names of the promotion levels are defined by the Role: Configuration Manager as part of defining project configuration policies (in the Artifact: Configuration Management Plan). The promotion levels are important to consumers of the baseline: for example, an implementer will want to know that a baseline is stable and tested before updating (or 'rebaselining') a private development workspace to be consistent with a baseline in the system integration workspace.