Many discussions of reuse presuppose a context of new development involving reusable components retrieved from a library. We present an expanded view of reuse that encompasses a spectrum of software evolution scenarios, including original development and maintenance. Central to all these reuse scenarios are the activities of software understanding and adaptation. We discuss the role of domain knowledge in understanding and adaptation, and describe an approach to their support using an explicit representation of this knowledge.
Keywords:
software reuse, software adaptation, software understanding, software evolution, reengineering, reverse engineering