Most of my research is applied; techniques are evaluated by developing prototypes for the sake of demonstration and assessment. This page lists some of these tools, which are all open source. If you are interested in contributing, or have any questions please contact me. Most of the tools are associated with a bug repository, so please report any bugs there.
The tools that use the GNU GPL only do so out of necessity (i.e. because one of the libraries is covered by GPL). Where possible, I try to use more permissive licences, such as BSD or Apache.
This page only lists the tools that I am actively working on at the moment (from 2013 onwards), where the work has been published. For tools from older papers, feel free to contact me.
The three tools that are under active development are:
- MINT - A tool to infer EFSMs from sequences with data (also used as the basis for ongoing work on software testing and automated theorem proving).
- SUMO - A tool for semi-automated remodularisation (and optionally refactoring) of software systems.
- ERTool - A tool to assist complex decisions (e.g. about software quality) in the presence of ignorance and uncertainty.
Extended Finite State Machines (EFSMs) are a modelling formalism that is frequently used to model software behaviour. They are effectively Finite State Machines with data guards. This tool will take traces, representing a sequence of events coupled with variable values, and infer the underlying EFSM.
The approach was described in "Inferring Extended Finite State Machines from Program Executions", which appeared at WCRE 2013. This has been elaborated upon in an extended Journal of Empirical Software Engineering paper.
The tool also underpins applications to automated interactive theorem proving, explored by Tom Gransden as part of his Ph.D. thesis. This work is described in two papers, one at CICM 2014, and a systems description paper at CADE 2015.
The tool takes as input a simple text file containing the sequences of events and variable values. The output can either be presented textually in the form of a GraphViz dot graph, or graphically in a GUI. The tool was developed with the help of Ramsay Taylor at the University of Sheffield, and Anselm Odigbo, who worked on the GUI.
The data constraints are inferred with the help of the WEKA data mining framework. Due to the use of this framework, the tool is licenced under the GPL v3 licence.
As software evolves, its module structure can deteriorate. Given such a system, the task of rearranging its files into suitable modules can be very difficult. This tool employs a technique we call Supervised Remodularisation to, with help from the developer, rearrange a software system into suitable packages.
The approach was described in the paper Supervised Software Remodularisation at ICSM 2012, by Mat Hall, Neil Walkinshaw, and Phil McMinn. This has been followed up by an ICSME ERA paper in 2014 looking at the impact of re-modularisation on source code.
Mat Hall at the University of Sheffield is the principal developer of this tool.
The tool takes as input a SIL file (a textual file representing the current package structure of a system), and provides a GUI (supported by a constraint solver) to rearrange the modules. To give a rough idea, a screenshot of the GUI is pasted below. The tool allows the user to iteratively state which elements belong together (green edges), or should be kept apart (red edges), to gradually home-in on what they believe to be a suitable set of modules.
Recently, an Eclipse plugin has been developed, which enables the use of SUMO to refactor Java projects. This was implemented by Mohammad Ali Khojaye. The plugin is available here.
This tool implements a technique known as Evidential Reasoning, and was developed to investigate the application of Evidential Reasoning to assess software quality.
The technique was described in the paper Using Evidential Reasoning to Make Qualified Predictions of Software Quality at PROMISE'13. The approach has since been extended to reason about safety cases for safety-critical software (published at SASSUR'14).
Given a hierarchy of factors (e.g. quality factors such as usability, testability, code coverage, etc.), it enables the user to supply their subjective assessment in the lowest-level factors as a probability distribution. These are then propagated up the hierarchy to provide an overall assessment of the product.
The tool takes a small textual description of the tree as input, and produces output as a GraphViz dot graph, connecting the various distributions together, as follows:
PhysViz - Visualising Software as a Particle System
This investigates the use of games technology to visualise software systems. The core of the visualisation system is written by Simon Scarle at UWE. We developed a JSON format to represent software as networks, where nodes and edges are linked to metrics. Much of this was inspired by the work of the MOOSE team.
A paper on this was published at VISSOFT 2015. More details on the software (including a link to the source code repository) are available here. As always, it is worth noting that this is a research prototype and could be difficult to work `out-of-the-box', but we are happy to help.