Design patterns have been widely adopted and well investigated by the software engineering community over the past decade. However, their primary use is still associated with forward engineering and the design phase of the software life-cycle. In this paper, we examine design patterns from a different perspective namely, their classification and usage for software re-engineering and restructuring. Specifically, twenty three design patterns originally presented in the "Gang of Four" book are reclassified for re-engineering purposes into two major categories, primitive and complex. Moreover, their relationships and impacts to specific re-engineering objectives are presented in terms of a layered model that is denoted by six different relations namely: uses, refines, conflicts, is-similar-to, combines-with, and requires. The paper also discusses how the classification scheme can be applied for the re-engineering and restructuring of object-oriented systems.
['Ladan Tahvildari', 'Kostas Kontogiannis']
On the role of design patterns in quality-driven re-engineering