Navigating the labyrinth of software re-words

Quality gains through various ways of exploiting legacy systems have been described with several re-words including reuse, restructuring, re-engineering, retro engineering, reverse engineering and refactoring. Modularisation, componetisation and production through assembly of existing components is long practiced in manufacturing with obvious productivity gains. In the case of software development and maintenance reusable code and reusable designs are both desirable and possible especially within the object-oriented paradigm. This paper is an attempt to revisit these terms, examine their meaning and purpose and clarify their interrelationships. The benefits of this study are primarily for practitioners but also for academics and scholars.