Charles W. Krueger provides a survey in the ACM Computing Surveys 24(2):131-183, June 1992. _Software reuse is the process of creating software systems from existing software rather than building software systems from scratch._ He analyzes software reuse technologies according to four dimensions: * Abstraction -- making a piece of softare reusable in a wider context * Selection -- finding the required component * ProgramSpecialization -- mechanisms for configuring assets to specific requirements * Integration -- a framework is needed to ensure that components can talk to each other. ---- See also I. Jacobson, M. Griss and P. Jonsson: _Software Reuse: Architecture, Process and Organization for Business Success_. Addison-Wesly, 1997. (481 pp.) Emphasizes *Application Family Engineering*, which then provides the infrastructure for *Application System Engineering* -- building applications from reusable components. The book does not yet mention SoftwareProductLines, but it does introduce all relevant concepts. Does not explicitly cover the notion of DomainEngineering -- this is covered as just an aspect of application family engineering. ---- CategorySoftwareEvolution | Contributions by ArieVanDeursen