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)
The quality of internetware software is significantly associated with class structure. As software evolves, changes often introduce many unrelated responsibilities to the same classes or distribute tightly-related methods in different classes. These changes make the classes difficult to understand and maintain. Extract class refactoring is an effective(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)
— Writing high quality concurrent programs is challenging. A concurrent program that is not well-written may suffer from coarse synchronization problems, e.g., overly-large critical sections, overly-coarse locks, and etc. These coarse synchroniza-tions may introduce unnecessary lock contention and thereby affect the parallel execution of running threads. To(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)