SEApr 19, 2021

Causal Program Dependence Analysis

arXiv:2104.09107v111 citations
Originality Incremental advance
AI Analysis

This work addresses program analysis and debugging for software engineers, offering an incremental improvement over existing fault localization techniques.

The paper tackles the problem of modeling program dependence relations by introducing Causal Program Dependence Analysis (CPDA), which uses causal inference to dynamically analyze dependencies in a continuous space, resulting in a method that ranks twice as many faults compared to SBFL in fault localization applications.

We introduce Causal Program Dependence Analysis (CPDA), a dynamic dependence analysis that applies causal inference to model the strength of program dependence relations in a continuous space. CPDA observes the association between program elements by constructing and executing modified versions of a program. One advantage of CPDA is that this construction requires only light-weight parsing rather than sophisticated static analysis. The result is a collection of observations based on how often a change in the value produced by a mutated program element affects the behavior of other elements. From this set of observations, CPDA discovers a causal structure capturing the causal (i.e., dependence) relation between program elements. Qualitative evaluation finds that CPDA concisely expresses key dependence relationships between program elements. As an example application, we apply CPDA to the problem of fault localization. Using minimal test suites, our approach can rank twice as many faults compared to SBFL.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes