Six tools for a well-run development process
Development is above all about how processes and tools work together. This article looks at five basic tools that every software team needs to work well. All these tools cooperate, which multiplies their benefits.

Source repository
A source repository, with source management and version control, is fundamental today. Who hasn't heard of CVS or SVN? When choosing a source repository, I recommend considering one important factor: IDE support. A command-line client has its uses, but the convenience of working in the IDE is priceless.
Build system
We want to automate project builds as much as possible, because automation makes them painless. What should a build system be able to do?
- Check out source files, accounting for dependencies between components
- Retrieve third-party libraries from a central repository
- Build the final artifacts (JAR, WAR, EAR and so on)
- Build API documentation (Javadoc)
A more general requirement is integration with third-party tools such as code analyzers. Being able to generate project files for an IDE is very useful. Maven 2 and Ant have proved themselves in many open-source projects.
Continuous integration system
A dedicated machine with software whose job is to run the build system continuously and put the results through automated tests. It reports test results, build problems and other useful statistics to the development team. What should we require of a CI system?
- Integration with the chosen build system
- Distributed builds, with the ability to send the build job to another machine
- Integration with the chosen source repository, including tags for selected builds such as milestones, release candidates and final builds
- IDE integration for starting builds, monitoring progress and viewing logs
- Reporting via email or instant messaging such as ICQ or Jabber
- Build scheduling and manual triggers
- A web administration interface
Issue tracker
A tool to report and manage problems and enhancements. Bugzilla is a classic example. Core features include issue management, meaning the states an issue moves through over time. Other equally important features are change notifications, an easy-to-use web interface and powerful search.
Over time you'll also appreciate integration with the IDE and the source repository. With repository integration it's useful to see which revision goes with which bug fix.
Document management
For all sorts of documents, from analyses to meeting minutes, you need a low-maintenance system that makes it easy to create documents and link them to one another. The basic requirements are:
- Easy creation for ordinary users, preferably through a browser without a special program
- Documents that can be shared in an open format, with no proprietary Word files on a network share
- Version history, with diffs and a log of changes
Any wiki implementation is an ideal solution.
Static code analyzers
Static code analyzers reveal potential problems before they happen and produce statistics about the source code. These can include API test coverage (code coverage), repeated code, unused or dead code, and compliance with coding conventions.
Here too the tools should integrate with the IDE and build system. The CI server should run them and report the results.
Related articles
Related articles
Related CZ Podcast episodes
- #261 · Leadership
On leading people and teams. · Czech audio