Skip to main content

Program Comprehension

Program Comprehension Research Group

Malcolm Munro

Durham University


Overview

The Program Comprehension Research Group has been established as a group
within the Centre for Software Maintenance at the University of Durham.
The costs a difficulties involved in software maintenance have been well
documented. A major contributor to these costs is the time-consuming procedd
of program comprehension. Program comprehension is performed during the
process of reuse, reengineering, and enhancing exisiting systems. It is
also performed during review or code walk-through of new programs. We use
the term Program Comprehension in a wide sense, not just for the understanding
of program code but incorporating all aspects of understanding of an application
or system. The comprehension process is the sum of a number of understanding
techniques.

Areas of interest

The interests of the group are varied but we are all working towards one
goal: improving the maintainability of software through researching issues
of program comprehension. Our interests are now described.

Models for the understanding process

Appeal to the theory of education and cognitive psychology as applied to
adults and trained learners to develop a model of the understanding process.
The trained learners are experts in software maintenance and development
but are not experts in the system being maintained nor in the domain of
the application. We beleive that through the application of learning theory
and congnitive psychology it is possible to better support the maintenance
process. This study will mainly concentrate on theoretical studies in applying
information known from the theory of the education of experienced learners
and applying this to maintainers. This will take two dimentions considering
support for those maintainers with domain knowledge and also those without.

Generation of traceability information

Traceability information is essential to the maintenance process as it
identifies related aspects of the application. This includes linking code
and documentation to ensure that consistency is retained and as much information
as possible is available to the maintainer to support the maintenance process.
We have already used noun and verb phrases to support the linking process
and therefore to regenerate missing traceability links. We now intend to
consider the use of themes. We believe that themes will help us to be able
to:
describe the structure of the content of the documents precisely and concisely compare the structure of such content from different sources in a systematic way describe structural change in a series of documents

Knowledge representation

Appeal to the theory of education and cognitive psychology as applied to
adults and trained learners to develop a model of the understanding process.
The trained learners are experts in software maintenance and development
but are not experts in the system being maintained nor in the domain of
the application. We beleive that through the application of learning theory
and congnitive psychology it is possible to better support the maintenance
process. This study will mainly concentrate on theoretical studies in applying
information known from the theory of the education of experienced learners
and applying this to maintainers. This will take two dimentions considering
support for those maintainers with domain knowledge and also those without.

Generation of traceability information

Traceability information is essential to the maintenance process as it
identifies related aspects of the application. This includes linking code
and documentation to ensure that consistency is retained and as much information
as possible is available to the maintainer to support the maintenance process.
We have already used noun and verb phrases to support the linking process
and therefore to regenerate missing traceability links. We now intend to
consider the use of themes. We believe that themes will help us to be able
to:
describe the structure of the content of the documents precisely and concisely compare the structure of such content from different sources in a systematic way describe structural change in a series of documents

Knowledge representation

Here we are concerned with the application of formal methods and formal
modelling of systems to assist in their comprehension. In particular, we
are interested in the application of formally-proven tranformations and
tools to restructure programs into more comprehensible forms and to generate
more abstract views; also, the modelling of systems using formal techniques
which allow us to reason formally about their properties.

Static and dynamic analysis of code

Static analysis produces infomation which is applicable to all possible
inputs of the program. However, this information can be imprecise, particularly
when attempting to obtain the data flow of a program when it contains dynamic
data structures or arrays. Dynamic analysis produces exact information
which is only applicable to a particular set of inputs. We aim to achieve
a combination of the two methods. Static analysis will be used to produce
most of the information with dynamic analysis being used to refine this
information when greater accuracy is required.

Objectives

Short term

apply theory of education to existing empirical studies application of dynamic code analysis to static code analysis extend noun and verb phrase analysis to themes

Medium term

cognitive model of the program comprehension process incorporating variants for different levels of expertise and domains mechanisms for information abstraction to reduce information overload application of knowledge engineering to the information obtained by analysis of the system study of the impact of visual development languages and methods including OO application of cognitive model to systems developed using formal methods tool support based on formal theory for modelling systems in specific domains

Long term

more generally applicable methods of modelling comprehension evaluation and feedback for different development methods application of cognitive model to development of formal tools