An empirical evaluation of quasi-static executable slices

Research output: Contribution to journalArticlepeer-review

Abstract

Program slicing aims to reduce a program to a minimal form that produces the same output for a given slicing criterion. Program slicing approaches divide into static and dynamic approaches: whereas static approaches generate an over-approximation of the slice that is valid for all possible program inputs, dynamic approaches rely on executing the program and thus generate an under-approximation of the slice that is valid for only a subset of the inputs. An important limitation of static approaches is that they often do not generate an executable program, but rather identify only those program components upon which the slicing criterion depends (referred to as a closure slice). In order to overcome this limitation, we propose a novel approach that combines static and dynamic slicing. We rely on observation-based slicing, a dynamic approach, but protect all statements that have been identified as part of the static slice by the static slicer CodeSurfer. As a result, we obtain slices that cover at least the behavior of the static slice, and that can be compiled and executed. We evaluated this new approach on a set of 62 C programs and report our findings.
Original languageEnglish
Article number111666
Number of pages13
JournalJournal of Systems and Software
Volume200
DOIs
Publication statusPublished - Jun 2023

Bibliographical note

This work was partially supported by the “ Cybersecurity Initiative Flanders, Belgium”.

Keywords

  • program slicing
  • dynamic analysis
  • static analysis

Cite this