Monthly Archives: August 2015

Revolutionising the process of software development

Suppose you wanted to have a new feature in your program, for example, you might want your chat client to provide support for multiple languages. There is already an abundance of language translators freely available online. Thus all that’s left to do is to pick one and adopt it for the chat client at hand. Currently such a task lies upon the shoulders of expert human software developers. As one might imagine, for the most popular pieces of software, like Facebook, there might be hunderds of request for new features coming in everyday. Programmers are then left to do the frequently daunting work of transplanting existing code implementing given functionality from one program to another. What if we could automate this process?


The process of software transplantation has a nice analogy with human organ transplants – you extract an organ (required functionality) from the donor (program) and insert it into the host (program). The key difference is that human organ transplantaion is very costly, whilst software errors in the development process happen on a daily basis. Furthermore, there’s nothing stopping programmers from trying to transplant a feature hundreds if not thousands of times. However, this would keep them away from doing more creative tasks.

We have thus applied a technique for automated software transplantation called genetic improvement and obtained award-winning results. GI was used to transplant a linguistic translation feature into the Pidgin instant messaging system that simultaneously translates the user’s English language instant messages into Portuguese and Korean [1]. We have also used it to automatically specialise software for a concrete application [2] as well as transplant a video encoding feature into the popular VLC media player [3]. This work has also been covered by WIRED.

We envision a future where expert software developers can be relieved of the task of transplanting existing code, leaving them more time to develop new and exciting software.


[1] Mark Harman,W B Langdon and Yue Jia. “Babel Pidgin: SBSE can grow and graft entirely new functionality into a real world system”. Symposium on Search-Based Software Engineering (SSBSE) 2014.

[2] Justyna Petke, Mark Harman, William B. Langdon and Westley Weimer. “Using Genetic Improvement & Code Transplants to Specialise a C++ Program to a Problem Class”. European Conference on Genetic Programming (EuroGP) 2014.

[3] Earl T. Barr, Mark Harman, Yue Jia, Alexandru Marginean and Justyna Petke. “Automated Software Transplantation”. International Symposium on Software Testing and Analysis (ISSTA) 2015.