Journal Article10.1007/S10009-007-0043-0
Slicing concurrent Java programs using Indus and Kaveri
79
TL;DR: Indus—a robust framework for analyzing and slicing concurrent Java programs, and Kaveri—a feature-rich Eclipse-based GUI front end for Indus slicing are presented.
read more
Abstract: Program slicing is a program analysis and transformation technique that has been successfully used in a wide range of applications including program comprehension, debugging, maintenance, testing, and verification. However, there are only few fully featured implementations of program slicing that are available for industrial applications or academic research. In particular, very little tool support exists for slicing programs written in modern object-oriented languages such as Java, C#, or C++. In this paper, we present Indus—a robust framework for analyzing and slicing concurrent Java programs, and Kaveri—a feature-rich Eclipse-based GUI front end for Indus slicing. For Indus, we describe the underlying tool architecture, analysis components, and program dependence capabilities required for slicing. In addition, we present a collection of advanced features useful for effective slicing of Java programs including calling-context sensitive slicing, scoped slicing, control slicing, and chopping. For Kaveri, we discuss the design goals and basic capabilities of the graphical facilities integrated into a Java development environment to present the slicing information. This paper is an extended version of a tool demonstration paper presented at the International Conference on Fundamental Aspects of Software Engineering (FASE 2005). Thus, the paper highlights tool capabilities and engineering issues and refers the reader to other papers for technical details.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Differential symbolic execution
Suzette Person,Matthew B. Dwyer,Sebastian Elbaum,Corina S. Pǎsǎreanu +3 more
- 09 Nov 2008
TL;DR: Differential symbolic execution (DSE) as discussed by the authors exploits the fact that program versions are largely similar to reduce cost and improve the quality of analysis results, and demonstrates its potential benefit through an exploratory study that considers version histories of two Java code bases.
292
Taming reflection: Aiding static analysis in the presence of reflection and custom class loaders
Eric Bodden,Andreas Sewe,Jan Sinschek,Hela Oueslati,Mira Mezini +4 more
- 21 May 2011
TL;DR: For the first time, TamiFlex enables sound static whole-program analyses on DaCapo and significantly improves code coverage of the static analyses, while for the former the approach even appears complete: the inserted runtime checks issue no warning.
265
Finding patterns in static analysis alerts: improving actionable alert ranking
Quinn Hanam,Lin Tan,Reid Holmes,Patrick Lam +3 more
- 31 May 2014
TL;DR: This work presents a method for differentiating actionable and unactionable alerts by finding alerts with similar code patterns, and uses machine learning techniques to build an actionable alert prediction model that is able to classify new SA alerts.
A Screening Test for Disclosed Vulnerabilities in FOSS Components
TL;DR: A screening test, based on thin slicing, for estimating quickly whether a given vulnerability is present in a consumed FOSS component by looking across its entire repository, and insights on the empirical probability that, on the above mentioned projects, a potentially vulnerable component might not actually be vulnerable after all.
An empirical study of rules for well-formed identifiers: Research Articles
Dawn Lawrie,Henry Feild,David Binkley +2 more
- 01 Jul 2007
TL;DR: Using a pool of 48 million lines of code, experiments with the resulting syntactic rules for well-formed identifiers illustrate that violations of the syntactic pattern exist and that three-quarters of these violations are ‘real’ and could be identified using a concept mapping.
29
References
Program Slicing
TL;DR: Program slicing as mentioned in this paper is a method for automatically decomposing programs by analyzing their data flow and control flow. But it is not a technique for finding statement-minimal slices, as it is in general unsolvable, but using data flow analysis is sufficient to find approximate slices.
3.3K
Program slicing
Keith Gallagher,David Binkley +1 more
- 01 Sep 2008
TL;DR: Applications of program slicing are surveyed, ranging from its first use as a debugging technique to current applications in property verification using finite state models, and a summary of research challenges for the slicing community is discussed.
2.8K
Interprocedural slicing using dependence graphs
TL;DR: A new kind of graph to represent programs is introduced, called a system dependence graph, which extends previous dependence representations to incorporate collections of procedures (with procedure calls) rather than just monolithic programs.
A Survey of Program Slicing Techniques.
Frank Tip
- 31 Jul 1994
TL;DR: An overview of the applications of program slicing, which include debugging, program integration, dataflow testing, and software maintenance is presented, including the various general approaches used to compute slices.
Soot: a Java bytecode optimization framework
Raja Vallée-Rai,Phong Co,Etienne Gagnon,Laurie Hendren,Patrick Lam,Vijay Sundaresan +5 more
- 01 Nov 2010
TL;DR: Soot, a framework for optimizing Java* bytecode, is implemented in Java and supports three intermediate representations for representing Java bytecode: Baf, a streamlined representation of bytecode which is simple to manipulate; Jimple, a typed 3-address intermediate representation suitable for optimization; and Grimp, an aggregated version of Jimple suitable for decompilation.