Concept: Continuous Integration |  |

Relationships

Related Elements

- Integration

Main Description

### Description

One of the goals of WAAD 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 WAAD 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.

### Benefits

- 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.