  Automated batch refactoring has become a de-facto mechanism to restructure
software that may have significant design flaws negatively impacting the code
quality and maintainability. Although automated batch refactoring techniques
are known to significantly improve overall software quality and
maintainability, their impact on resource utilization is not well studied. This
paper aims to bridge the gap between batch refactoring code smells and
consumption of resources. It determines the relationship between software code
smell batch refactoring, and resource consumption. Next, it aims to design
algorithms to predict the impact of code smell refactoring on resource
consumption. This paper investigates 16 code smell types and their joint effect
on resource utilization for 31 open source applications. It provides a detailed
empirical analysis of the change in application CPU and memory utilization
after refactoring specific code smells in isolation and in batches. This
analysis is then used to train regression algorithms to predict the impact of
batch refactoring on CPU and memory utilization before making any refactoring
decisions. Experimental results also show that our ANN-based regression model
provides highly accurate predictions for the impact of batch refactoring on
resource consumption. It allows the software developers to intelligently decide
which code smells they should refactor jointly to achieve high code quality and
maintainability without increasing the application resource utilization. This
paper responds to the important and urgent need of software engineers across a
broad range of software applications, who are looking to refactor code smells
and at the same time improve resource consumption. Finally, it brings forward
the concept of resource aware code smell refactoring to the most crucial
software applications.
