Created by W.Langdon from gp-bibliography.bib Revision:1.8051
Automated software transplantation (autotransplantation) is a form of automated software engineering, where we use search based software engineering to be able to automatically move a functionality of interest from a donor program that implements it into a host program that lacks it. Autotransplantation is a kind of automated program repair where we repair the host program by augmenting it with the missing functionality. Automated software transplantation would open many exciting avenues for software development: suppose we could auto-transplant code from one system into another, entirely unrelated, system, potentially written in a different programming language.
Being able to do so might greatly enhance the software engineering practice, while reducing the costs. Automated software transplantation manifests in two different flavours: monolingual, when the languages of the host and donor programs is the same, or multilingual when the languages differ. This thesis introduces a theory of automated software transplantation, and two algorithms implemented in two tools that achieve this: uSCALPEL for monolingual software transplantation and rSCALPEL for multilingual software transplantation. Leveraging lightweight annotation, program analysis identifies an organ (interesting behaviour to transplant); testing validates that the organ exhibits the desired behavior during its extraction and after its implantation into a host.
We report encouraging results: in 14 of 17 monolingual transplantation experiments involving 6 donors and 4 hosts, popular real-world systems, we successfully autotransplanted 6 new functionalities; and in 10 out of 10 multlingual transplantation experiments involving 10 donors and 10 hosts, popular real-world systems written in 4 different programming languages, we successfully autotransplanted 10 new functionalities. That is, we have passed all the test suites that validates the new functionalities behaviour and the fact that the initial program behaviour is preserved. Additionally, we have manually checked the behaviour exercised by the organ. Autotransplantation is also very useful: in just 26 hours computation time we successfully autotransplanted the H.264 video encoding functionality from the x264 system to the VLC media player, a task that is currently done manually by the developers of VLC, since 12 years ago. We autotransplanted call graph generation and indentation for C programs into Kate, (a popular KDE based test editor used as an IDE by a lot of C developers) two features currently missing from Kate, but requested by the users of Kate. Autotransplantation is also efficient: the total run-time across 15 monolingual transplants is 5 hours and a half; the total runtime across 10 multilingual transplants is 33 hours",
Genetic Programming entries for Alexandru Marginean