Program Comprehension

 
 

Current Projects

  • Stitch: Crossing the chasm between XP user stories and source code
  • Stitch is a program comprehension tool designed for use in the XP environment. It links user stories (described on physical cards or in a tool) to test cases and source code. Stitch tracks changes made to either user stories or source code, thereby aiding program comprehension in a dynamic fashion and providing 360-degree visibility to all stakeholders and participants.
  • Source Code Searching
  • Searching within source code using tools such as Grep and find, is a technique well known to support program comprehension. Sim et. al, conducted a survey of software maintainers, and identified that typical scenarios of searching within source code are, searching for declarations and definitions of functions and variables. The existence of huge open source software repositories on the Internet, has posed several possibiltiies for improving software development and reuse. Little is known about how programmers search for source code in these repositories. Our current research builds on the findings of the above mentioned source code searching project, as we are conducting an empirical study to determine how software developers typically search for source code on the Internet.

Background

"The process of understanding software products in general and programs in particular is at the heart of virtually all software maintenance activities, and it accounts for over half of the time and effort spent on effecting change." (Grubb and Takang, 2003)

Program comprehension can be broadly categorized into three phases. These phases have no fixed order, and involve backtracking and iteration. Each of them is supported by information sources and tools, as outlined below:

  • reading about the program, which is supported by information sources such as system documentation, structure charts, data and control flow diagrams
  • reading source code is one of the principal ways of obtaining information about a system, given that most documentation may not be updated or accurate. Tools such as static analyzers support this process.
  • running the program is another phase in program comprehension that allows the programmer to get dynamic trace data about the program, and study program behavior

As programmers try to understand programs, they form an internal representation of the program, that is known as a 'mental model'. A mental model is formed by interacting and observing a system, and becomes more complete and accurate as more information about the target system is obtained. Cognitive structures and cognitive processes that shape a mental model, differ for each person.

Grubb and Takang (2003) also discuss factors that influence effective program comprehension:

  • language expertise and domain knowledge of the maintenance personnel
  • programming environment and availability of automated support tools
  • programming practice and implementation issues
  • availability of documentation
  • organization and presentation of programs
  • complexity of the original problem

References

[1] Grubb, P., & Takang, A. (2003). Software Maintenance: Concepts and Practice. Singapore: World Scientific Publishing.