
Using design patterns improves the maintainability of software systems. Applying patterns often implies upfront design while Agile methods rely on software architecture to emerge. Our work bridges this gap by applying refactoring towards patterns to improve software design. We propose complex refactoring to J2EE design patterns and describe requirements of complex refactorings and accompanying tool support.