Academia.eduAcademia.edu

Program Slicing

description1,427 papers
group418 followers
lightbulbAbout this topic
Program slicing is a technique in software engineering that involves isolating relevant parts of computer programs based on specific criteria, such as variables or program statements. It aids in understanding, debugging, and maintaining code by focusing on the segments that directly affect a particular computation or output.
lightbulbAbout this topic
Program slicing is a technique in software engineering that involves isolating relevant parts of computer programs based on specific criteria, such as variables or program statements. It aids in understanding, debugging, and maintaining code by focusing on the segments that directly affect a particular computation or output.

Key research themes

1. How can dynamic program slicing be adapted for complex programming paradigms such as feature-oriented and object-oriented programs?

This research area focuses on developing dynamic slicing algorithms and intermediate program representations tailored to advanced programming paradigms that introduce complexities beyond traditional procedural programs. These paradigms include feature-oriented programming (FOP), which involves mixin layers and refinements, as well as object-oriented programming (OOP) with mechanisms like inheritance and friend functions. Dynamic slicing in this area matters because it enables precise debugging, testing, and maintenance in software systems with modular features and OO abstractions, overcoming limitations of classical slicing that may yield imprecise or incomplete slices.

Key finding: Proposes the ETBFODS dynamic slicing algorithm specifically designed for feature-oriented programs by constructing a Dynamic Feature Composition Dependence Graph (DFCDG) that encodes unique FOP characteristics such as mixin... Read more
Key finding: Develops dynamic slicing techniques for complex C++ programs by focusing on object-oriented features such as inheritance and friend functions, which affect code reuse and program dependencies. Using program dependence graphs... Read more

2. What are effective methodologies for advanced program slicing combining slicing and program transformation semantics?

This theme investigates formal foundations and practical implementations of program slicing through semantic and transformational approaches using rigorous mathematical models. Program slicing is viewed as program transformations ensuring semantic equivalence or refinement, leading to correctness guarantees. This includes semantic slicing, conditioned slicing, and amorphous slicing—all aiming to produce executable slices that preserve essential program behavior under various criteria and inputs. This focus matters for establishing soundness and enabling advanced slicing functionalities such as slicing with specifications and conditions for use in reverse engineering, program comprehension, and re-engineering.

Key finding: Presents a rigorous formalization of program slicing within the Wide Spectrum Language (WSL) transformation theory, defining slicing as a program transformation that preserves semantic equivalence. Introduces semantic... Read more
Key finding: Introduces ConSUS, a conditioner system for WSL programs enabling conditioned slicing that augments slicing criteria with initial state conditions to prune infeasible paths before static slicing. ConSUS employs symbolic... Read more
Key finding: Outlines the theoretical foundation of WSL transformation theory, emphasizing the importance of formal semantic definitions and correctness proofs in program transformations such as slicing. Demonstrates that program... Read more
Key finding: Applies the improved formalism of WSL-based semantic slicing to a challenging slicing problem, illustrating that minimal semantic slices can be derived for any program with given slicing criteria. The study presents both... Read more

3. How can dynamic slicing address omission bugs to improve fault localization in practice?

This theme investigates the limitations of classical dynamic slicing when confronting omission bugs—faults caused by missing execution of code—and develops approaches for overcoming its dead ends. By conducting empirical studies on bug repositories and analyzing the causes and fixes of omission bugs, this research aims to extend dynamic slicing techniques to localize and recommend relevant suspicious code regions that standard dynamic slicing misses. This matters because omission bugs are prevalent and challenging for automated debugging, requiring refined techniques to enhance fault localization accuracy and developer productivity.

Key finding: Provides an empirical study showing omission bugs comprise 46.4% of bugs in Defects4J and identifies patterns in their causes and fixes. Proposes a neural network model trained on mutated omission bugs to recommend candidate... Read more

All papers in Program Slicing

Service-Oriented Architecture (SOA) enables the coordination of multiple loosely coupled services. This allows users to choose any service provided by the SOA without knowing implementation details, thus making coding easier and more... more
Service-Oriented Architecture (SOA) enables the coordination of multiple loosely coupled services. This allows users to choose any service provided by the SOA without knowing implementation details, thus making coding easier and more... more
The use of component models such as Enterprise Java Beans and the CORBA Component Model (CCM) in application development is expanding rapidly. Even in real-time safety-critical and mission-critical domains, component-based development is... more
This paper presents a technique to derive and implement error detectors to protect an application from data errors. The error detectors are derived automatically using compiler-based static analysis from the backward program slice of... more
This paper presents a technique to derive and implement error detectors to protect an application from data errors. The error detectors are derived automatically using compiler-based static analysis from the backward program slice of... more
All the relevant suggestions and modifications suggested by the audience during the pre-synopsis seminar and recommended by the Doctoral Committee of the candidate have been incorporated in the thesis. The work presented in this thesis... more
Branch covera g e i s a n i m p ortant criteria used during the structural testing of programs. In this paper, we present a new program execution based approach to generate input data that exercises a selected b r anch in a program. The... more
An important problem that arises in path oriented testing is the generation of test data that causes a program to follow a given path. In this paper, we present a novel program execution based approach using an iterative relaxation method... more
Program slicing has long been used to facilitate program understanding. Several approaches have been suggested for computing slices based on different perspectives, including forward slicing, backward slicing, static slicing, and dynamic... more
Abstract—Program slicing is used as a basis for an approach to estimate maintenance effort. A case study of the GNU Linux kernel with over 900 revisions spanning 17 years of history is presented. For each revision a system dictionary is... more
Program slicing has long been used to facilitate program understanding. Several approaches have been suggested for computing slices based on different perspectives, including forward slicing, backward slicing, static slicing, and dynamic... more
A slicing-based approach to estimate maintenance effort for open-source software projects is presented. GNU Linux kernel is used as a case study with over 900 versions spanning 17 years of history. For each version the forward static... more
This paper presents our proposed approach for detecting code clones based on similar slices of different versions of large software systems. We begin by presenting our initial thoughts on realizing software slice clone detection. We... more
An efficient lightweight forward static slicing tool is presented. The tool is implemented on top of srcML, an XML representation of source code. The approach does not compute the full program dependence graph but instead dependency... more
A highly efficient lightweight forward static slicing approach is presented and evaluated. The approach does not compute the program/system dependence graph but instead dependence and control information is computed as needed while... more
Program slicing is used as a basis for an approach to estimate maintenance effort. A case study of the GNU Linux kernel with over 900 versions spanning 17 years of history is presented. For each version a system dictionary is built using... more
A highly efficient lightweight forward static slicing method is introduced. The method is implemented as a tool on top of srcML, an XML representation of source code. The approach does not compute the program dependence graph but instead... more
In order to improve Analytic Hierarchy Process (AHP), this paper proposes the decomposition of data in the AHP by the logarithmic linear model. Data are decomposed to a main effect, an order effect, a combination effect, personal... more
Program slicing is a well-known technique that utilizes dependency graphs and static program analysis. Our goal is to perform impact analysis of Erlang programs based on the resulted program slices, that is we want to measure the impact... more
Protocol and typestate analyses often report some sequences of statements ending at a program point P that needs to be scrutinized, since P may be erroneous or imprecisely analyzed. Program slicing focuses only on the behavior at P by... more
Protocol and typestate analyses often report some sequences of statements ending at a program point P that needs to be scrutinized, since P may be erroneous or imprecisely analyzed. Program slicing focuses only on the behavior at P by... more
The composition of multiple software units does not always yield the desired results. In particular, aspect-oriented composition mechanisms introduce new kinds of composition problems. These are caused by different characteristics as... more
This paper presents a unique point-of-view for program visualization, namely, the use of scientific visualization techniques for program visualization. This paper is exploratory in nature. Its primary contribution is to re-examine program... more
Data reverse engineering (DRE) is a complex and costly process that requires a deep understanding of large dataintensive software systems. This process can be made easier with the use of program understanding methods and tools. In this... more
Metamorphic malware continuously modify their code, while preserving their functionality, in order to foil misuse detection. The key for defeating metamorphism relies in a semantic characterization of the embedding of the malware into the... more
This paper proposes several concepts that form the basis for slicing object-oriented programs. In the case of objectoriented languages, new relations occur between language constructs such as classes, methods, and messages. Thus new forms... more
Abstract. The algorithm SPECTREspecializes logic programs withrespect topositive and negativeexamples by applying the transforma-tionruleunfolding together withclauseremoval. Themethod IMPUTpresented in this paper gives a modified version... more
Web Services emerge as a new paradigm for distributed computing. Model checking is an important verification method to ensure the trustworthiness of composite WS. Boolean abstraction and counterexample driven refinement are major... more
Program slicing is a well-known technique that utilizes dependency graphs and static program analysis. Our goal is to perform impact analysis of Erlang programs based on the resulted program slices, that is we want to measure the impact... more
Slicing has been widely applied in many fields of software engineering, such as debugging, testing, software maintenance and restructuring. Several meta-heuristic search algorithms have been discussed and applied in many areas and been... more
This paper presents some connections between dependence analysis and mutation testing. Specifically, dependence analysis can be applied to two problems in mutation testing, captured by the questions: 1. How do we avoid the creation of... more
We present a declarative debugger for sequential Erlang programs. The tool is started when a program produces some unexpected result, and proceeds asking questions to the user about the correctness of some subcomputations until an... more
Feature modelling is a common mechanism for variability management in the context of software product lines. After years of progress, the number of proposals to automatically analyse feature models is still modest and the data about the... more
Debugging lazy functional programs poses serious challenges. In support of the "stop, examine, and resume" debugging style of imperative languages, some debugging tools abandon lazy evaluation. Other debuggers preserve laziness but... more
This paper presents a technique to derive and implement error detectors to protect an application from data errors. The error detectors are derived automatically using compiler-based static analysis from the backward program slice of... more
In system-level designs, since many incremental refine-ments are applied to the designs, equivalence checking be-tween each refinement should be applied. However, prov-ing whether two concurrent designs are equivalent is a dif-ficult... more
Test smells can reduce the developers' ability to interact with the test code. Refactoring test code offers a safe strategy to handle test smells. However, the manual refactoring activity is not a trivial process, and it is often... more
Parallel changes are becoming increasingly prevalent in the development of large scale software system. To further study the relationship between parallel changes and faults, we have designed and implemented a semantic conflict analyzer... more
Changes to source code have become a critical factor in fault predictions. Text or syntactic approaches have been widely used. Textual analysis focuses on changed text fragments while syntactic analysis focuses on changed syntactic... more
Global software developments intensify parallel changes. Although parallel changes can improve performance, their interferences contribute to faults. Current Software Configuration Management (SCM) systems can detect the interference... more
Parallel developments are becoming increasingly prevalent in the building and evolution of large-scale software systems. Our previous studies of a large industrial project showed that there was a linear correlation between the degree of... more
While working on modernization of large monolithic application; speed , synchronization and interaction with other components are the major concern for practical implementation of target system; as Service-Oriented Computing extends and... more
While working on modernization of large monolithic application; speed , synchronization and interaction with other components are the major concern for practical implementation of target system; as Service-Oriented Computing extends and... more
There exist several implementations of the functional logic lan-guage Curry: a transformation to Prolog and implementations of abstract machines for C and Java. We show that there are many advantages of a further implementation as a... more
Download research papers for free!