One of the goals of XP is to ensure that the customer can feel and touch actual progress that reflects the investment
to date. As the team builds the software incrementally according to the customer's priority, the new functionality is
continuously integrated and demonstrated to the customer.
Integration in XP can happen several times a day. As developers finish some work, they integrate what they have done.
Typically, integration is done on an integration machine in order to serialize the process. Integration is supported by
unit tests and acceptance tests. When a pair of programmers first sits at the integration machine, the current code
base passes all tests. They start by integrating their changes into the code and checking for conflicts. Then, they run
all tests. Should any test fail, the pair is responsible for fixing the code and making it pass. Since the tests were
all passed before, the failures are in some way related to the modifications that have made to the code. Once all the
tests have passed, the integration can be considered a success and another pair can now integrate its changes. The
integrated build can then be handed over to the customer, who can see the new functionality on a running system.
This practice obviously requires the use of tools and an environment that supports fast integration/build/test cycles.
Simplified and faster integrations: reduces important conflicts associated with big bang integration and
insures that people are working with the latest version of the code.
Improved feedback: shows constant and demonstrable progress (it takes a running system to pass the
customer's acceptance tests).
System always shippable: the latest version of the system passing all tests is always available.