Department of Chemistry

Murray-Rust Research Group

Software

We have developed a large number of software components of varying complexity with much inter-dependence between the components. These components are listed below.

We embrace agile development practices. The majority of the code is written in Java and we use the Apache maven build system (compiles, manages dependencies etc.) Our software development environment is built upon existing technologies. Substantial use is made of existing Open Source utilities, tools and libraries such as Apache Commons, Restlet, CDK.

We endeavour to write the code with high test coverage (as much unit testing as possible is built-in at the initial stages), and aim for test-driven development. We run a Hudson continuous integration server and a Nexus maven repository so all the code is developed under source control (a mixture of svn and mercurial). The Hudson server polls the source repositories at regular intervals and rebuilds and tests any updated projects in a clean environment. If the updated code compiles successfully and passes all the unit tests, it is deployed to the maven repository and any downstream (dependent) projects are then re-compiled/re-tested in the same way. Thus, any modifications which would break compatibility with any other components are flagged, identified and rectified at the earliest possible opportunity.