Odersky, MartinZenger, Matthias2006-01-242006-01-242006-01-24200510.1145/1094811.1094815https://infoscience.epfl.ch/handle/20.500.14299/221760We identify three programming language abstractions for the construction of reusable components: abstract type members, explicit selftypes, and modular mixin composition. Together, these abstractions enable us to transform an arbitrary assembly of static program parts with hard references between them into a system of reusable components. The transformation maintains the structure of the original system. We demonstrate this approach in two case studies, a subject/observer framework and a compiler front-end.Scalable Component Abstractionstext::conference output::conference proceedings::conference paper