How do programs become more concurrent: a story of program transformations

TitleHow do programs become more concurrent: a story of program transformations
Publication TypeConference Paper
Year of Publication2011
AuthorsDig, D., J. Marrero, and M. D. Ernst
Conference NameProceeding of the 4th international workshop on Multicore software engineering - IWMSE '11
Pagination43 - 50
Date Published05/2011
PublisherACM Press
Conference LocationHonolulu, HI, USA
ISBN Number9781450305778

In the multi-core era, programmers need to resort to parallelism if they want to improve program performance. Thus, a major maintenance task will be to make sequential programs more concurrent. Must concurrency be designed into a program, or can it be retrofitted later? What are the most common transformations to retrofit concurrency into sequential programs? Are these transformations random, or do they belong to certain categories? How can we automate these transformations?

To answer these questions we analyzed the source code of five open-source Java projects and looked at a total of 14 versions. We analyzed qualitatively and quantitatively the concurrency-related transformations. We found that these transformations belong to four categories: transformations that improve the responsiveness, the throughput, the scalability, or correctness of the applications. In 73.9% of these transformations, concurrency was retrofitted on existing program elements. In 20.5% of the transformations, concurrency was designed into new program elements. Our findings educate software developers on how to parallelize sequential programs, and provide hints for tool vendors about what transformations are worth automating.