Chaste methodology
Our development methodology includes many ideas that we have taken from the agile programming arena. Developers work together in pairs and produce new code in short iterative bursts with frequent planning and retrospective meetings. Development of any code is preceded by the creation of one or more test cases to thoroughly check that the code to be written meets our requirements. Ideally, core tests are included in our continuous test pack, which is run frequently and every time a check-in is performed. Test result summaries for every revision are automatically published to a web page. Longer tests are divided between the nightly and weekly test packs, depending on how long they take to complete.
All Chaste development work is undertaken within a purpose built development environment that encourages and supports best software engineering practice. This environment is built around open source tools starting with the Eclipse IDE (www.eclipse.org) using the C/C++ Development Toolkit, the gdb debugger and Subclipse plugin (subclipse.tigris.org) which interfaces to our Subversion (subversion.tigris.org) repository. We use Scons (www.scons.org) to automate builds and run automated tests through the CxxTest unit testing framework (cxxtest.sourceforge.net). Different builds can be specified (using respectively valgrind, gprof and gcov) to: test for memory leaks, generate performance profiles, and give test coverage results (which should be all lines of code given the test-first methodology). Our environment makes use of a combined Trac (trac.edgewall.org) and Wiki (www.wiki.org) website to manage our list of requests for features, improvements and bug fixes. A test reporting system has been developed and incorporated to the website to keep track of the outcome of our continuous, nightly and weekly tests, and alert us of any change to the behaviour of the code.
Developer functionality
- Source released under GNU LGPL license.
- Fully tested codebase (~55000 code lines and 50000 test lines (Jan 09)):
- Immediate detection of newly broken functionality.
- To obtain details on functionality.
- Web-based automatic testing and integration framework.
- Two development strategies:
- To develop functionality that links against Chaste libraries.
- To modify and extend the current implementations.
- Documented examples of use.
- Installation guides for both Chaste and its software dependencies.

