Black-Box Program Specialization

Software components offer numerous advantages in terms of development, but may give rise to inefficiency due to highly generic implementations. Program specialization can automatically remove overheads due to overly generic implementations, but requires inspection of the source code. To retain the advantages of black-box software components, we propose black-box program specialization: specialization opportunities are specified by the developer and become part of the interface of a component, allowing the user to specialize the component according to specific needs. We characterize the problem of consolidating program specialization and blackbox component re-use, outline our proposed solution, and illustrate our approach using an example.