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.
|