agile continuous

Last modified: October 18th, 2013

 

The goal of any agile development team is to be able to deliver what the customer wants, when the customer wants it. In order to keep the system ready at all times for a delivery, teams practice continuous integration. Continuous integration is a mechanism where the code is constantly being updated and built in a central location. There are two major elements to continuous integration:  Framework and Mindset.

Framework

A successful integration platform will include source control, automated build, automated unit test and automated acceptance test.  Many tools have been created to allow for this, such as cruisecontrol and FitNesse.  The general flow is as follows:

  1. Code Check-in
  2. Automatic Build
  3. Automatic Unit Tests
  4. Automatic Acceptance Tests
  5. Automated deployment/packaging (optional)

Upon completion of a piece of functionality, the programmers check in their work to the integration server. Whenever a check-in occurs, a build is kicked off by the server.  If the build is successful, the low-level unit tests will run. If those tests all pass, the acceptance tests run.  At any point in the process, if tests or builds fail, the team is notified. This allows for immediate interception of issues that might snowball if left for later. These tests also help to ensure that new changes don’t destabilize the existing codebase.

Mindset

Continuous integration is most successful when the entire team learns to embrace the concepts. As has been stated, “Daily builds are for wimps”. Team members should strive for many builds in a given day. The smaller amount of time between builds, the smaller the candidate pool for errors when something does break. Many programmers are used to checking out and locking several files, and not checking them back in until they are sure the entire large system is ready for testing -- usually a few days or even weeks after checking them out. By getting used to taking small chunks of functionality at a time, agile team members find themselves far more effective, and more able to embrace the inevitable changes.

Continuous Integration
(Martin Fowler)
"What is Extreme Programming?" (Ron Jeffries)