

Each day new applications are developed and extra features are added to the existing ones. This means establishment of new program code or introducing modifications to the existing code. To ease up new modifications, software design should be constantly improved to cope with the vast changes added. The quality of software architecture plays an important role, it determines the time to market new features, maintainability and extensibility of applications and readability of the source code. Sustaining overall quality of architecture requires refactoring phases for the design to cope with new changes, which also restores source code readability and extensibility. More experienced developers conduct code reviews in different phases of application development to pin point places that need improvements. Several code refactoring steps can be applied to source code, to recover maintainability and extensibility of it. Refactoring is playing an important role, not only in software development, but also in other fields. In this article the authors give an overview, what can be achieved by refactoring and point out some success stories. Several aspects of refactoring process are studied, and a refactoring strategy proposed.