Litcius/Paper detail

Program slicing of Java programs

Carlos Galindo, Sergio Pérez, Josep Silva

2022Journal of Logical and Algebraic Methods in Programming16 citationsDOIOpen Access PDF

Abstract

Program slicing is a technique to extract the part of the program that can affect the values computed at a given program point (known as the slicing criterion). To represent programs, program slicing uses the System Dependence Graph (SDG), for which several extensions like the Java System Dependence Graph (JSysDG) or the Sub-Statement Linear Dependence Graph (SSLDG) exist to deal with Java object-oriented programs. In this paper, we present an incompleteness result proving that these graphs do not produce complete slices in all cases, and specifically when some object variables are selected as the slicing criterion. We first identify the source of the problem: the representation of dependences between partial definitions of objects is ill-defined in these approaches, leading to a loss of completeness in many cases. To solve this limitation, we extend these representations with the addition of a specific flow dependence for object type variables called object-flow dependence. This extension provides a more accurate flow representation between object variables and its data members and it allows us to obtain complete slices when an object variable is selected as the slicing criterion.

Topics & Concepts

Program slicingSlicingComputer scienceControl flow graphJavaObject (grammar)Programming languageGraphDependence analysisRepresentation (politics)Theoretical computer scienceData-flow analysisMethodData flow diagramObject-oriented programmingArtificial intelligenceDatabasePolitical scienceWorld Wide WebPoliticsLawSoftware Testing and Debugging TechniquesSoftware Engineering ResearchSoftware Reliability and Analysis Research
Program slicing of Java programs | Litcius