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.