Project home
Durham home
Stats home
Comp Science home
Reading list
Page top

Page mainainer:
Simon Shaw


Research supported by the UK Engineering and Physical Sciences Research Council

Welcome to our homepage. We are a research group based at the University of Durham. In a long-term collaboration with industrial partners, we have been working on the development of statistical methods to provide practical support for software testing, typically for large systems used in telecommunications.

The research group is interdisciplinary, featuring members of the Statistics and Computer Science groups at the university. The Members page provides individual details about the group and links to their individual homepages. If you would like further information about our work, or would like to ask us any questions, then please e-mail , or write to:

Simon Shaw
Department of Mathematical Sciences,
University of Durham,
Science Laboratories,
South Road,
DH1 3LE,

Software testing

Software reliability is a problem of major and growing practical importance. Although testing to high reliability is regarded as crucial and is often the most expensive phase in the software development, little statistical support for such measures has been developed for complex systems. 
Current testing practice is mainly based on intuition and severe time constraints. Intuition plays a major role in determining important variables and setting their values for testing, with implicit judgements about the probabilities and associated risks involved in possible failures. 

With practical time constraints severely limiting the level of testing, sound statistical methods synthesising all relevant information are vitally important. For example, when the software is a new release of an existing system, experience from earlier testing and practical use of the older system is highly relevant to current testing. Similarly, regression testing is the process of testing a program after changes have been made to it, to make sure that the changes have not introduced further errors. For such testing, there already exists a set of prior test cases. 

The natural way to exploit expert knowledge is through subjective probabilities and utilities, feeding into a Bayesian decision analysis, but, as far as we are aware, this approach has not yet been applied for any large scale software testing. While the Bayesian approach has enormous potential for effective test design, it is crucial that the methodology should be developed in close relation to both practical software testing, and also the logical analysis of the underlying structure of the code, as the acceptance and success of such methods will depend on the correctness and practical acceptability of the assumptions underlying the statistical methods. 

Our approach utilises Bayesian graphical models as dynamic representations of the software testing problem. Details of our work, including downloadable papers, may be found in the Research area of these pages.

Program Comprehension

Program comprehension is concerned with the understanding of existing software systems. It is a major factor in the maintenance and evolution of software. Without an understanding of the structure and inter-relationships of a piece of software, programmers cannot carry out changes required to improve or increase functionality, or to correct detected errors, that are a necessary part of the continued maintenance and evolution of systems.  

Directed graphs represent the structure ,and interelationships of a software system. Such graphs can be automatically generated by a static analysis of a system. For example, a call graph represents the calling structure (which function invokes which function) of a piece of software.  

Our interest lies in building upon current research, for example by the Program Comprehension Research Group here at the university, to develop rigorous methods for constructing a model of the internal structure of software systems. This will contribute to building the graphical models required to carry out successful testing. Further, the quantification of uncertainty has not yet been considered explicitly within program comprehension methodology, so that we hope to provide a new link to allow software engineers to incorporate uncertainty formally into their understanding of complex software systems. Details of our work, including downloadable papers, may be found in the Research area of these pages.