Learn More
Program slicing is a technique to extract program parts with respect to some special computation. Since Weiser first proposed the notion of slicing in 1979, hundreds of papers have been presented in this area. Tens of variants of slicing have been studied, as well as algorithms to compute them. Different notions of slicing have different properties and(More)
Received (Day Month Year) Revised (Day Month Year) Accepted (Day Month Year) Cluster test selection is a new successful approach to select a subset of the existing test suite in regression testing. In this paper, program slicing is introduced to improve the efficiency and effectiveness of cluster test selection techniques. A static slice is computed on the(More)
Program slicing is an important program analysis technique and now has been used in many fields of software engineering. However, most existing program slicing methods focus on static programming languages such as C/C++ and Java, and methods on dynamic languages like Python are rarely seen. Python, a typical dynamic object-oriented language, has been more(More)
Data dependences are of critical importance in many software engineering activities. Due to the dynamic allocation mechanism, it is still difficult to extract them precisely for heap locations. This paper firstly proposes two notion of interstatement must aliases and then exploits these aliases in improving data depend-ence analysis for heap locations. We(More)
Regression testing is an expensive and frequently executed activity, which is often performed in a resource constrained execution environment. As resource-aware test suite optimization problem can be reduced to the 0-1 knapsack problem, which can be efficiently approximated with multiple algorithms. This paper proposes a new resource-aware test suite(More)
With the keyword synchronized, Java provides a simple but often over-used synchronization mechanism. Many programmers tend to use a big synchronized section to protect a large block of statements even if many of them are unnecessarily synchronized. Such coarse-gained synchronizations may increase lock contention and thereby decrease the performance of a(More)
Lots of efforts have yet been devoted to the detection of memory leaks. However, very few work concerns on the problem of memory leak fixing. In this paper, we propose a dynamic approach for the weak reference based memory leak fixing. The approach can automatically infer the weakenable references in a program, rank them and report them to the user. The(More)
Slicing is an important decomposition technique for program understanding. However, traditional slicing methods tend to produce too large slices for human inspection as modern programs are often huge and static program analyses are hard to be precise enough. One possible solution to such problem could be combining other program decomposition techniques(More)