Program Analysis

Development, enhancement, and maintenance of programs and software systems is -- apart from optimizing transformations in compilers -- the most important application area for program analysis. Here, the aim is to adapt and condense information which has been automatically derived from programs so that it helps human developers to understand programs and to modify and enhance them.

Effective program analysis depends on state-of-the-art analysis methods like points-to analysis to identify the targets of method calls in object-oriented languages like Java. We have integrated this and similar analysis algorithms in the software infrastructure PAULI that we develop for analysis of Java classfiles. We have applied the framework in several ways, already:
  • Languages like Java pose new challenges and new opportunities for program analysis, because they support new models for program execution and offer the ability to load classes at runtime. In our research group we explore this aspect in the context of analysis of large software libraries for Java. Our approach is based on an off-line analysis of individual Java libraries ahead of runtime which annotates classfiles with the resulting information. When such classfiles are loaded and linked by the Java virtual machine the included information is combined with similar information for the remainder of the currently executing program and triggers optimizing code transformations during runtime. This hybrid combination of off-line analysis and post-processing at runtime yields analysis results of high quality. The quality is comparable to conventional off-line analysis of complete programs which is no longer possible in the presence of dynamic class loading.
  • The automated distribution of mulit-threaded Java programs is another field of application of program analyses. Java programs are automatically prepared for execution on a cluster of computers. Furthermore, specialised analyses have to uncover the communication structure of the program, to support skilful distribtuion strategies.
  • The validation of dataflow results is a new area of research. The goal is to support a safe use of precomputed analysis results. Therefore, the approach has to check efficiently that analysis results correspond to a given program.

Imprint | Webmaster | Recent changes: 16.10.2013