This page describes and provides links to software that has been produced by me in the course of my research projects, or by others in my collaborations with them:

ReDeCheck (REsponsive DEsign Checker)

Responsive Web Design (RWD) is a relatively new web design paradigm that aims to ensure that web pages are easily viewable and usable across a range of devices, from small-screen mobile phones to widescreen desktop. The layouts of RWD pages “respond” to the viewport size of the device on which a page is being viewed.

Developing a true responsive web page is tricky balancing act. Small changes intended to effect the web page at one viewport width can have knock-on effects to others.

ReDeCheck is a tool for checking and testing responsively-designed web pages. It models the layout of a web page over a series of viewport widths and checks for potentially unintended changes when the HTML or CSS of a page has been updated.

Check out its website at:


SchemaAnalyst automatically generates JUnit test suites for relational database schemas. The generated test cases consist of SQL “INSERT” statements containing test data that aim to exercise a schema’s integrity constraints in order to test whether they have been correctly specified.

SchemaAnalyst is also capable of “mutating” schemas to evaluate test suites. It currently works with Postgres, HyperSQL and SQLite.

SchemaAnalyst is freely available from

IGUANA (Input Generation Using Automated Novel Algorithms)

IGUANA uses search-based algorithms to automatically generate test data for C programs.

Check out its website at:

AVMf (The AVM Framework)

The Alternating Variable Method (AVM) is a famous optimisation algorithm used in test data generation, and is now being applied to other software engineering problems.

The AVMf is a framework and Java implementation of the Alternating Variable Method (AVM). It handles a variety of data types and includes code for the latest, most efficient algorithms.

Find out more at:

SUMO (SUpervised reMOdularisation)

As software grows in size, it frequently needs to be refactored. As part of a refactoring, one question developers often need to answer is “which components belong together?”

SUMO is a tool that aims to help developers “remodularise” their software using automated constraint coupling and small amounts of developer knowledge.

SUMO is available to check out as a Git repository.