Information-flow and data-flow analysis of while-programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
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)
The relationship between slices and module cohesion
ICSE '89 Proceedings of the 11th international conference on Software engineering
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
Cyclomatic Complexity Density and Software Maintenance Productivity
IEEE Transactions on Software Engineering
Interprocedural modification side effect analysis with pointer aliasing
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Software complexity and maintenance costs
Communications of the ACM
Slicing object-oriented software
Proceedings of the 18th international conference on Software engineering
A specification driven slicing process for identifying reusable functions
Journal of Software Maintenance: Research and Practice
Extracting Reusable Functions by Flow Graph-Based Program Slicing
IEEE Transactions on Software Engineering
Using design abstractions to visualize, quantify, and restructure software
Journal of Systems and Software - Special issue on software engineering and knowledge engineering
Semantics-preserving procedure extraction
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automated method-extraction refactoring by using block-based slicing
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
Better Slicing of Programs with Jumps and Switches
FASE '02 Proceedings of the 5th International Conference on Fundamental Approaches to Software Engineering
Ada-Europe '96 Proceedings of the 1996 Ada-Europe International Conference on Reliable Software Technologies
Slicing Programs with Arbitrary Control-flow
AADEBUG '93 Proceedings of the First International Workshop on Automated and Algorithmic Debugging
Slicing java programs that throw and catch exceptions
Proceedings of the 2003 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Slicing Objects Using System Dependence Graphs
ICSM '98 Proceedings of the International Conference on Software Maintenance
Effective, Automatic Procedure Extraction
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis
IEEE Transactions on Software Engineering
Unions of Slices Are Not Slices
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
Journal of Systems and Software
Amorphous Procedure Extraction
SCAM '04 Proceedings of the Source Code Analysis and Manipulation, Fourth IEEE International Workshop
The LAN-simulation: A Refactoring Teaching Example
IWPSE '05 Proceedings of the Eighth International Workshop on Principles of Software Evolution
JAAT: Java Alias Analysis Tool for Program Maintenance Activities
ISORC '06 Proceedings of the Ninth IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing
How Are Java Software Developers Using the Eclipse IDE?
IEEE Software
Tool-Supported Refactoring of Existing Object-Oriented Code into Aspects
IEEE Transactions on Software Engineering
Pareto optimal search based refactoring at the design level
Proceedings of the 9th annual conference on Genetic and evolutionary computation
An empirical study of slice-based cohesion and coupling metrics
ACM Transactions on Software Engineering and Methodology (TOSEM)
Search-based refactoring for software maintenance
Journal of Systems and Software
Analysis of Procedure Splitability
WCRE '08 Proceedings of the 2008 15th Working Conference on Reverse Engineering
Analysis of Procedure Splitability
WCRE '08 Proceedings of the 2008 15th Working Conference on Reverse Engineering
Identification of Extract Method Refactoring Opportunities
CSMR '09 Proceedings of the 2009 European Conference on Software Maintenance and Reengineering
How we refactor, and how we know it
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Local Search-Based Refactoring as Graph Transformation
SSBSE '09 Proceedings of the 2009 1st International Symposium on Search Based Software Engineering
Re-approaching the refactoring Rubicon
Proceedings of the 2nd Workshop on Refactoring Tools
WikiDev 2.0: Facilitating Software Development Teams
CSMR '10 Proceedings of the 2010 14th European Conference on Software Maintenance and Reengineering
Fine slicing: theory and applications for computation extraction
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Automated refactoring to the Strategy design pattern
Information and Software Technology
Identification of generalization refactoring opportunities
Automated Software Engineering
Refactoring software packages via community detection in complex software networks
International Journal of Automation and Computing
To what extent can maintenance problems be predicted by code smell detection? - An empirical study
Information and Software Technology
Hi-index | 0.01 |
The extraction of a code fragment into a separate method is one of the most widely performed refactoring activities, since it allows the decomposition of large and complex methods and can be used in combination with other code transformations for fixing a variety of design problems. Despite the significance of Extract Method refactoring towards code quality improvement, there is limited support for the identification of code fragments with distinct functionality that could be extracted into new methods. The goal of our approach is to automatically identify Extract Method refactoring opportunities which are related with the complete computation of a given variable (complete computation slice) and the statements affecting the state of a given object (object state slice). Moreover, a set of rules regarding the preservation of existing dependences is proposed that exclude refactoring opportunities corresponding to slices whose extraction could possibly cause a change in program behavior. The proposed approach has been evaluated regarding its ability to capture slices of code implementing a distinct functionality, its ability to resolve existing design flaws, its impact on the cohesion of the decomposed and extracted methods, and its ability to preserve program behavior. Moreover, precision and recall have been computed employing the refactoring opportunities found by independent evaluators in software that they developed as a golden set.