Refactoring Tool Roles
1. Visualize design
2.
2. Diagnose problems
3.
3. Show new designs
4.
4. Implement the refactorings
Stepping back for a bit, a redesign tool could potentially support the user in a number of roles, because refactoring is a multi step process.
First, the tool can give the user a visual representation where it’s easy to spot opportunities for refactoring.
Second, the tool can diagnose design problems by looking for `bad smells’ or `antipatterns’, known patterns of design weakness like code duplication.
Third, the tool can show the user the results of proposed refactorings, allowing them to chain together multiple refactorings to visualize new designs.
And finally the tool can verify that the refactorings preserve behavior and implement them by changing the source code.
Choosing the actual refactorings – between steps two and three in this process – is the most difficult step and remains up to the user.