Abstract:
According to the plan-driven software development processes, software creation is comprised of a sequence of activities which starts with requirement analysis and continues with system design, implementation, testing and deployment and finally ends with maintenance phase. Although each phase contributes to the total development cost, research shows that more than 60% of it comes from maintenance. The quality and clarity of the system design or implementation subsequently is responsible for the cost of maintenance. Therefore, it is of great importance to detect and eliminate any design or implementation flaws to reduce the cost of development especially incurred by maintenance phase. This study discusses the importance of refactoring in software engineering and difficulties one may face with applying refactoring. We also lay out the factors that affect execution of certain refactoring. We present a discussion that takes us to a conceptual solution for more effective refactoring research and we share our observations and personal opinions in how to apply refactoring more effectively.