
Without
controlling integration developers test their code and
integrate believing all is well. But because of parallel integration
there is a combination of source code which has not
been tested together before. Integration problems happen
without detection.

Further
problems happen when there is no clear cut latest version. This applies
not only to the source code but the
unit
test suite which must verify the source code correctness. If
you can not lay your hands on a complete, correct, and consistent test
suite you will be chasing bugs that do not exist and passing up bugs
that do.

You
can have developers own specific classes. Class owners integrate
and commit to the repository properly. Interclass
dependencies
can still be wrong. Class owners can become bottle necks if one class
requires many changes and it doesn't solve the whole problem.

Yet
another way is to appoint an integrator or integration team.
Integrating code from multiple developers is more than a single person
can handle. And a team of people is too big a resource to integrate
more than once a month. In this environment developers work with
obsolete versions which are then erroneously re-integrated into the
code base.

Many
projects use on a source code repository tool to control integration.
Most source code
repositories seem to encourage sequential development and parallel
integration. That is, they lock a file so only one developer can add
functionality at a time. They allow anyone to