Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the adequacy of program dependence graphs for representing programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Slicing object-oriented software
Proceedings of the 18th international conference on Software engineering
A refactoring tool for Smalltalk
Theory and Practice of Object Systems - Special issue object-oriented software evolution and re-engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
The Java Language Specification
The Java Language Specification
Selecting Regression Tests for Object-Oriented Software
ICSM '94 Proceedings of the International Conference on Software Maintenance
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Software refactoring at the function level using new Adaptive K-Nearest Neighbor algorithm
Advances in Engineering Software
Identification of extract method refactoring opportunities for the decomposition of methods
Journal of Systems and Software
Fine slicing: theory and applications for computation extraction
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Identifying extract-method refactoring candidates automatically
Proceedings of the Fifth Workshop on Refactoring Tools
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Hi-index | 0.00 |
Refactoring improves the design of existing code but is not complex to do by hand. This paper proposes a mechanism that automatically refactors methods of object-oriented programs by using program slicing. To restructure a method without changing its observable behavior, the mechanism uses block-based slicing that does not extract the fragments of code from the whole program but from the region consisting of some consecutive basic-blocks of the program. A refactoring tool implementing the mechanism constructs a new method that contains the extracted code and re-forms the source method that contains this tool, a programmer indicates only a variable of interest in the code that he/she wants to refactor and then selects a suitable method from among the candidates created by the tool. The programmer does not have to test the refactored code since the mechanism is based on data-and control-flow analysis. Thus the tool enables programmers to avoid manual refactoring whose process is error-prone and time-consuming