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

For program comprehension, developers often require complementary sources of information to understand a software system. They use information about the code structure (class diagrams), points-to field references, control flow (call graphs), and dataflow. Using static analysis to extract dataflow information from object-oriented code is challenging because the analysis must deal with language features such as inheritance, recursion, and aliasing. Existing analyses extract flat graphs that show a large number of objects and lack architectural abstraction. Furthermore, some existing analyses suffer from imprecision. An adoptable analysis should aim for a judicious tradeoff between precision and scalability.

In order to extract information that conveys design intent, we rely on annotations in the code. The annotations implement the Ownership Domains type system, by Aldrich and Chambers. An ownership domain is a conceptual group of objects where each object belongs to one domain that does not change at runtime. The developer annotates each object reference in the program with the domain that owns it.

In this thesis, we leverage the ownership domain annotations that are present in a program and propose a static analysis to extract a hierarchical object graph that shows objects and edges that convey dataflow information. We informally describe the analysis on a Listener example, formalize it using constraint-based inference rules and conjecture that the analysis is sound. We implement the analysis and evaluate it on real object-oriented code to evaluate its precision in practice. We confirm that the analysis extracts precise dataflow information. The extracted graphs make certain dataflows in the program visually obvious. Such diagrams could be potentially useful for developers performing code modification tasks. We also compare the analysis with another analysis that extracts flat object graphs and we show that our analysis is more precise.