Abstracting Program Dependencies using the Method Dependence Graph

Traditional dependence model based on the system dependence graph (SDG) supports fine-grained dependence analysis yet often becomes too heavyweight to be applicable. The Method Dependence Graph (MDG) is developed for abstracting the statement-level dependencies in the SDG to method (function) level directly to provide a lighter-weight dependence model for application analyses working at method level. A representative example of such application analyses is impact analysis, which commonly works at method level thus a method-level dependence model suffices.

Given a program, our technique builds its MDG which includes full method-level data and control dependencies, including those due to exceptional control flows. As its focus is on dependencies among methods, the MDG does not include statement-level dependencies. Instead, intraprocedural dependencies are abstracted away using dependence summaries inside methods.

This is the project homepage for MDG, where the usage information is hosted and how MDG works is illustrated by an example program and the MDG diagram of the program. The MDG tool is realized on top of our data-flow analysis and instrumentation library DUA-forensics, which is based on the Soot byte-code analysis and optimization framework. Both MDG and DUA-forensics can be downloaded, with other third-party libraries, using the links provided on this page.

How MDG works


Generated on 4 Apr 2015 by  doxygen 1.6.1