Skip to main content


Research Overview

My research activity is concentrated in the area of Software Engineering, and in particular Software Maintenance. I am one of the founder members and a director of the Centre for Software Maintenance (CSM), established at Easter of 1987 within the Department of Computer Science, University of Durham. The CSM is the first research centre in the world to be established by a group of academics concentrating on the problems of maintaining software. It is now recognised by academics from Europe, USA and Japan, and by practitioners from industry as the leading research centre in software maintenance worldwide. The CSM has received two international awards for their research from the Arthur Anderson Foundation and the Software Maintenance Association, both based in the USA.

Within the CSM academic staff collaborate to form an overall strategy for research into software maintenance with individual members pursuing their own particular lines of research. This allows a greater breath of research to be done and allows some degree of cooperative research to be carried out whilst at the same time keeping academic independence and freedom.

The main thrust of my own research within the CSM is to develop methods, techniques and tools to enable software engineers to deal with existing, continually evolving, software systems. The particular themes of software maintenance I am researching into are Reverse Engineering, Program Comprehension, Software and System Visualisation, Documentation for Maintenance, Reuse/Re-engineering, and Impact Analysis.

Some of the current results of my research, all published in refereed journals and conferences, are:

  • definition of a reverse engineering method (RECAST),
  • definition of a new graph representation of programs that facilitates different views of programs for program comprehension,
  • development of tools for the re-documentation and navigation of existing source code through the use of hypertext technology,
  • definition of a reuse/re-engineering paradigm (Candidature, Election, Qualification, Classification and Storage, and Search and Display),
  • definition of two new methods for the identification and extraction of abstract data types in code,
  • definition of a model of software and documentation that facilitates the early detection of an impact of a change.

The long term vision for my research is that each of the research themes will be drawn together to into a single thread enabling the software industry to exploit its existing resources in a more productive manner. This will be achieved by utilising the results of the research as follows:

  • methods and analysis from Reverse Engineering,
  • systems representations and views from Program Comprehension,
  • visualisation of systems in 2D and 3D,
  • documentation styles and navigation from Documentation for Maintenance,
  • candidature, election and qualification from Reuse/Re-engineering,
  • systems and propagation models from Impact Analysis.

A longer term aim is to provide mechanisms for software developers to be able to develop software that will be truly evolutionary.

To achieve the aims of my research I am leading research groups in the themes stated above:

  • Reverse Engineering Development of processes and techniques for representing existing software system at a higher level of abstraction than source code. This research has led to the development the RECAST method for reverse engineering large commercial legacy systems.
  • Program Comprehension Research into how software engineers understand existing systems.
  • Visualisation of Systems This research is investigating methods for representation and visualisation of systems by the application of ideas and techniques from virtual reality
  • Documentation for Maintenance Research into the type of information a software maintainer requires in order to carry out maintenance tasks. This research has led to the exploitation of hypertext techniques in the representation of, and incremental re-documentation of existing systems.
  • Reuse/Re-engineering Development of tools and techniques for the extraction of reusable components from existing software systems. This research is being carried out within the RE^2 project which is concerned with the exploitation of reverse engineering and re-engineering techniques to facilitate reuse re-engineering by the identification and classification of appropriate candidature criteria.
  • Impact Analysis Research into the development of a method for predicting the effect of a change to an existing system as early as possible in the change cycle. The research is investigating how changes can be represented and methods for the automatic propagation of changes.

All of the above themes are inter-related in that they require the development of analysis tools, a representation of information, and a method for exploitation of that information.