Static Analysis of Object-Oriented Programs
Static analysis derives information by inspection of the source code. The information must be valid for all possible executions of the program. Conservative assumptions must be taken if the program uses conditional branches and iteration since it is not known at compile time which branches will be taken at run time and how many iterations there will be. Two main concepts of object-oriented programming are polymorphism and dynamic binding. Furthermore object-oriented programs make heavy use of pointers (or references to objects). These dynamic aspects are difficult to integrate into static analysis. We have developed a program slicer that models dynamic aspects of object-oriented programs correctly. Starting from conservative assumptions about dynamic binding and aliases, new user guidance techniques are used to reduce these assumptions.
Paper at the
9th ECOOP Workshop for PhD Students in Object-Oriented Programming,
Lisbon, Portugal, June 14-15, 1999.