This page is maintained for archival purposes only. For current information please visit

Areas of Interest

The PROLANGS group does research in the area of static and dynamic analysis of object-oriented programs. Past research focused on analysis of pointers and side effects in C programs, semantic analysis for evolving large software systems, and development of new analyses for object-oriented programming languages. Current work focuses on practical and efficient analyses for object-oriented languages (C++, Java) and their use in the testing and debugging of Java programs. Specific current projects include semantic change impact analysis for Java programs within an integrated development environment (Eclipse), techniques for using change impact information for finding fault-inducing changes in Java codes, compiler-directed testing of exception handling code in server applications, and specialized static+dynamic analyses for performance understanding of framework-based systems.


Active Projects

Dila - Dynamic Load-time Instrumentation Library

Dila is a dynamic load-time instrumentation library developed by our group in cooperation with IBM Research. Dila uses customized class loading for instrumenting the byte code of a program before it is executed. During the execution of an instrumented program dynamic program representations, such as call graphs, are created, which can be used for various program analyses. Dila is completely written in Java and uses the byte code manipulation toolkit Shrike from the WALA project. It has been built as a library for online analysis tools with a particular focus on performance. The library is licensed under the Eclipse Public License (EPL).



During program maintenance, a programmer may make changes that enhance program functionality or fix bugs in code. Then, she usually will run regression tests to prevent invalidation of previously tested functionality. If a test fails unexpectedly, she needs to explore her edit to find the failure-inducing changes for that test. Chianti is an Eclipse plug-in that assists the process. Chianti is a tool that performs semantic chance impact analysis to allow the programmer to examine those parts of the edit that may have affected the failing test. Chianti then builds compilable intermediate versions of the program, by adding programmer-selected partial edits to the original code, augmenting the selection as necessary to ensure compilation. The programmer can re-execute the test on the intermediate version in order to locate the exact reasons for failure, by concentrating on the specific changes that were applied.



Coming soon.


Analysis-based Process Enforcement for Team-oriented Software Development

The new goal of the next generation of integrated development environments (IDEs) is utilized guidance for development processes. Such IDEs, like IBM's Team Concert, try both to guide developers in each process activity and to enforce a specific result, e.g., all existing tests have to pass before applied changes can be committed to the team repository. In this project, we're going to integrate deep program analysis techniques, such as change impact analysis, with such tool support to identify those changes that do not break any test and, thus can safely committed to the shared repository. Moreover, the analysis will guide developers in finding the root cause in the edit of a subsequent test failure, and in calculating changes left uncovered by the current test suite.


Current Grant Support


Areas of Research

Below are listed the current areas of research in the PROLANGS group.

Previous research projects include those listed below.