Support for an integrated approach to program understanding : an application of software visualisation
Program Comprehension is a key factor in providing effective software maintenance and enabling successful evolution of software systems. The objective of this research is to provide a framework and mechanism to facilitate the understanding of large software systems. There exist a number of theories and models of Program Comprehension where each favours a different approach to comprehension. It is evident that there is no real consensus on how maintainers understand software systems. The disparities in the comprehension strategies are largely dependent on the personal and circumstantial factors. Factors such as the level of technical competence of the maintainers, the size and complexity of the piece of software, and the types and goals of the maintenance activities can influence the process of comprehension. This research proposes an alternative approach to Program Comprehension. It acknowledges that the process of comprehension is opportunistic, and that the current comprehension theories are inadequate in addressing this. There is a need for a more flexible approach towards comprehension, and the Integrated Approach proposed in this thesis provides a way for the utilisation of the various comprehension theories under a single environment. It recognises that any one of the comprehension theories may become active during comprehension. Under the Integrated Approach, maintainers have the option of selecting and executing the various comprehension strategies as they see fit. The Integrated Approach to comprehension is based on a matrix of Program Relationships between Program Elements of a programming language. In this thesis, these Program Relationships are derived for the C programming language constructs. This work also involves the investigation of the roles of both textual and graphical representations during the comprehension process. Both representations are commonly used to alleviate the problem of information overloading when maintainers trying to understand and maintain a software system. The Integrated Approach is realised in a tool named PUI (program understanding implements) which provides an environment enabling the utilisation of various comprehension theories.