imports, empty blocks, etc. In a typical usage scenario:
- Developer writes the code using IDE.
- Checkstyle/PMD (integrated with this IDE) runs through the code in the background and displays the warnings/errors.
- Developer fixes them accordingly and keeps writing new code.
EMMA and Cobertura are code coverage tools that:
- Can used to calculate the percentage of code accessed by tests.
- Can do coverage on statement, path and condition.
- Identify redundant test cases.
Agile teams benefits by getting early feedback about possible "about-to-happen-defects" captured at the build stage. The developer can iteratively fix the code and build (see Figure 1).
Figure 1: Tool integration in an Agile environment.
Continuous integration (CI) is the practice of integrating the developed code as frequently as possible. CI is all about communicating early and communicating often. One can configure CI tools to do regular builds at a constant interval or to execute builds asynchronously triggered by events like checking in source code into repository. In a typical usage scenario:
- Developer checks in code to repository.
- CI tool gets triggered, builds the code and executes the tests.
- CI tool outputs test results, code coverage results, and build status on a Web page.
CI tools can be configured to send emails about the build status to the developers, thus increasing the developer's productivity by avoiding constant polling of build status (see Figure 2). Agile teams benefit from increased communication, early feedback and adapt cycle, and improved quality and productivity
Figure 2: CruiseControl integration
ANT is the most popular Java build tool. It acts as glue among the source code, quality tools and continuous integration server. A continuous integration server could be configured to run the build file at regular intervals.
Having multiple source code repositories scattered across GDT will hamper communication. As the size of the project grows, the configuration managers have been found wasting their productive hours in merging code from different repositories. The solution to this problem is to have a common repository such as CVS , Subversion or ClearCase. (These could be integrated with an IDE like Eclipse.) Agile teams benefit because a common repository helps improve communication among teams, reduce waste as managing single repository is easy, support effective daily build and integration and provide global view of code quality to entire team.
Kent Beck says: "An interested observer should be able to walk into the team workspace and get a general idea of how the project is going in 15 seconds. He should be able to get more information about real or potential problems by looking more closely." 
"Information radiators" are visual display units that could help in achieving Kent's goal. Many agile teams use white boards, flipcharts, posters and electronic display units. At Valtech, we use a combination of the above and also use a "virtual lava lamp" (VLL). VLL is a piece of Java code that can be integrated with Cruise Control. VLL monitors the build status and displays the build status information graphically on a huge monitor (see Figure 3). Since VLL runs as a Web application, the onsite team (in the case of GDTs) can access the Web page and display the build status in its own offices. Thus, all of the project teams get early and up-to-date information about the build status and can communicate using the information radiator.
Figure 3: Picture of Virtual Laval Lamp taken in agile room.
If a defect is found at later stages of the project, the cost of tracing the origin and fixing the