eprintid: 10195705
rev_number: 13
eprint_status: archive
userid: 699
dir: disk0/10/19/57/05
datestamp: 2024-08-15 14:32:00
lastmod: 2025-01-28 16:09:52
status_changed: 2025-01-28 16:09:52
type: article
metadata_visibility: show
sword_depositor: 699
creators_name: Gold, Nicolas
title: Causal Program Dependence Analysis
ispublished: pub
divisions: UCL
divisions: B04
divisions: F48
keywords: CPDA, Dependency analysis, Causal inference, Observation-based analysis
note: This work is licensed under a Creative Commons License. The images
or other third-party material in this article are included in the Creative Commons license,
unless indicated otherwise in the credit line; if the material is not included under the Creative Commons license,
users will need to obtain permission from the license holder to reproduce the material. To view a copy of this
license, visit http://creativecommons.org/licenses/by/4.0/
abstract: Discovering how program components affect one another plays a fundamental role in aiding engineers comprehend and maintain a software system. Despite the fact that the degree to which one program component depends upon another can vary in strength, traditional dependence analysis typically ignores such nuance. To account for this nuance in dependence-based analysis, we propose Causal Program Dependence Analysis (CPDA), a framework based on causal inference that captures the degree (or strength) of the dependence between program elements. For a given program, CPDA intervenes in the program execution to observe changes in value at selected points in the source code. It observes the association between program elements by constructing and executing modified versions of a program (requiring only light-weight parsing rather than sophisticated static analysis). CPDA applies causal inference to the observed changes to identify and estimate the strength of the dependence relations between program elements. We explore the advantages of CPDA's quantified dependence by presenting results for several applications. Our further qualitative evaluation demonstrates 1) that observing different levels of dependence facilitates grouping various functional aspects found in a program and 2) how focusing on the relative strength of the dependences for a particular program element provides a detailed context for that element. Furthermore, a case study that applies CPDA to debugging illustrates how it can improve engineer productivity.
date: 2025-02
date_type: published
official_url: https://doi.org/10.1016/j.scico.2024.103208
oa_status: green
full_text_type: pub
language: eng
primo: open
primo_central: open_green
verified: verified_manual
elements_id: 2304289
doi: 10.1016/j.scico.2024.103208
lyricists_name: Gold, Nicolas
lyricists_id: NGOLD19
actors_name: Gold, Nicolas
actors_id: NGOLD19
actors_role: owner
full_text_status: public
publication: Science of Computer Programming
volume: 240
article_number: 103208
citation:        Gold, Nicolas;      (2025)    Causal Program Dependence Analysis.                   Science of Computer Programming , 240     , Article 103208.  10.1016/j.scico.2024.103208 <https://doi.org/10.1016/j.scico.2024.103208>.       Green open access   
 
document_url: https://discovery.ucl.ac.uk/id/eprint/10195705/1/Gold_1-s2.0-S016764232400131X-main.pdf