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

  •