Date of Award

12-2011

Document Type

Dissertation

Degree Name

Doctor of Philosophy (PhD)

Legacy Department

Computer Science

Committee Chair/Advisor

Malloy, Brian A

Committee Member

von Oehsen , James B

Committee Member

Hallstrom , Jason A

Committee Member

Srimani , Pradip K

Abstract

In this thesis, we describe our system, Hylian, for statement-level analysis,
both static and dynamic, of a C++ application. We begin by extending the
GNU gcc parser to generate parse trees in XML format for each of the
compilation units in a C++ application. We then provide verification that the
generated parse trees are structurally equivalent to the code in the
original C++
application. We use the generated parse trees, together with an augmented
version of the gcc test suite, to recover a grammar for the C++ dialect that
we parse. We use the recovered grammar to generate a schema for further
verification of the parse trees and evaluate the coverage provided by our
C++ test suite. We then extend the parse tree, for each compilation unit, with
semantic information to form an abstract semantic graph, ASG, and then link
the ASGs for all of the compilation units into a unified ASG for the entire
application under study. In addition, to relieve the cognitive burden of
information that may inundate a developer, we describe our development of
extensions to Hylian to build abbreviated abstract semantic graphs, which
incorporate information about user code, but not about compiler provided
library code. Finally, we describe the various approaches that we adopted to
provide assurance for the developer that the ASGs that Hylian builds,
correctly represent the program under study.

Share

COinS
 
 

To view the content in your browser, please download Adobe Reader or, alternately,
you may Download the file to your hard drive.

NOTE: The latest versions of Adobe Reader do not support viewing PDF files within Firefox on Mac OS and if you are using a modern (Intel) Mac, there is no official plugin for viewing PDF files within the browser window.