Off-campus WSU users: To download campus access dissertations, please use the following link to log into our proxy server with your WSU access ID and password, then click the "Off-campus Download" button below.

Non-WSU users: Please talk to your librarian about requesting this thesis through interlibrary loan.

Access Type

WSU Access

Date of Award

January 2011

Degree Type

Thesis

Degree Name

M.S.

Department

Computer Science

First Advisor

Marwan Abi-Antoun

Abstract

Software maintenance accounts for 50% to 90% of the costs over the life-cycle of

a software system. And program comprehension is a major activity during software

maintenance, absorbing around half of the maintenance costs. This is especially

true when developers attempt to perform maintenance tasks such as bug fixes and

feature requests on a well-designed framework. Therefore, during code evolution

tasks, developers often consult high-level views of the system, i.e., design documents

and diagrams, to help them understand the design intent before they attempt any

code modification. Different diagrams are often used to describe the design intent in

a software system, including diagrams of the code structure, e.g. class diagrams, and

diagrams of the run-time structure, i.e. object diagrams. A class diagram describes

class dependencies at compile time, whereas an object diagram describes interactions

between different instances of a class at run-time. An exploratory study showed that

80% of the developers questions while doing coding activities required thinking about

object relations rather than class dependencies. Thus, class diagrams are not enough

for understanding the structure of the system and need to be combined with object

diagrams to understand object interactions.

There is no shortage of tools that extract class diagrams. Also, previous research

studied the benefits of class diagrams. Giving developers usable object diagrams, how-

ever, had typically been challenging. Recently, Abi-Antoun and Aldrich had proposed

an approach to extract hierarchical ownership object graphs (OOG) for the entire system. An OOG can help developers address a typical software comprehension task at a variety of abstraction levels, by combining information about object communication

at both the architectural level and implementation details hidden within interfaces

such as data structures, an inherent feature in the object-oriented paradigm. But the

usefulness of those diagrams had not been evaluated empirically. So we set out to

investigate the following research question: do developers who have access to diagrams of the run-time structure, i.e. OOGs, in addition to diagrams of the code structure, i.e. class diagrams, perform code modification tasks more effectively than developers who have access to only diagrams of the code structure?

This thesis provides the first empirical evidence to evaluate the usefulness of

OOGs. In a controlled experiment, we observed 10 developers perform maintenance

activities on a well-designed object-oriented framework. We found that when developers attempt code maintenance tasks, they struggle mostly with activities related

seeking answers for questions about the object structure. Two of the developers who

had access to OOGs completed the three tasks compared to only one developer who

had access to only class diagrams. On average, developers who had access to OOGs

performed their activities in less time (22%-60%), and by browsing less irrelevant

code (10%-60%) than developers who had access to only class diagrams or who did

not use diagram at all.

Off-campus Download

Share

COinS