Hello everyone,
On Tuesday, December 16, at 17:00 I will defend my PhD thesis.
The defense will take place in room 001, Engehaldenstrasse 8, Bern
(for directions please see
http://www.iam.unibe.ch/institute/location ).
After the defense, there will be an apéro.
You are cordially invited to the defense and to the apéro.
Cheers,
Adrian Lienhard
Software Composition Group
University of Bern, Switzerland
http://www.adrian-lienhard.ch/
-------------------------------------
TITLE: Dynamic Object Flow Analysis
ABSTRACT:
The behavior of an object-oriented software system is notoriously hard
to understand from the source code alone. The main reason is the large
gap between the program’s static structure and its actual runtime
behavior. Features inherent to object-orientation, like object
aliasing and late binding, – while providing a high degree of
expressiveness to model an application domain — make programs hard to
understand, maintain, and analyze.
Complementary to static analysis, dynamic analysis can help to close
this gap by investigating the properties of a running program. The
state of the art in dynamic analysis focuses on investigating runtime
control flow and structures of object graphs, but a thorough analysis
of how objects are passed through a system is missing. Tracking how
object references are transferred, however, is essential to analyze
the dependencies introduced by object aliasing.
In this dissertation we propose Object Flow Analysis, our approach to
track object flow by explicitly representing object references and
reference transfer. Object Flow Analysis provides an effective way of
analyzing and runtime monitoring dependencies introduced by object
aliasing. To validate Object Flow Analysis, we propose three different
reverse engineering applications that, based on Object Flow Analysis,
reason about aliasing dependencies in object-oriented programs. Yet
Object Flow Analysis extends beyond traditional reverse engineering
applications. A key contribution of our work is that we advance the
state of the art in back-in-time debugging by proposing and providing
an implementation of the concept of Object Flow Analysis in a high-
level language virtual machine.