Martin Rinard

Code Transfer

Over the last several decades, software developers have produced a large body of software applications. Automatic code transfer identifies useful code in a donor application, then transfers the code into a recipient application, enabling the recipient to reuse code originally developed for other applications. The technique therefore makes it possible to work with the large body of developed applications as a source of usefully repurposable functionality. We have demonstrated the use of code transfer to enhance the security, performance, and delivered functionality of recipient applications. Notable technical contributions of our code transfer systems include the use of dynamic analysis to implement name translations, data structure translations, and the identification and elimination of irrelevant code.

There is a strong analogy between code transfer and horizontal gene transfer in biological organisms. Examples of horizontal gene transfer include plasmid transfer (which plays a major role in acquired antibiotic resistance), virally-mediated gene therapy, and the transfer of insect toxin genes from bacteria to fungal symbionts. Because of its ability to directly transfer functionality evolved and refined in one organism into another, horizontal gene transfer is recognized as a significant factor in the development of many forms of life. By enabling the immediate transfer and reuse of functionality across multiple applications, code transfer can similarly promote promote and enhance the rapid development and evolution of large software systems.

The following papers present code transfer systems that we have developed: