Understanding, refactoring, and fixing concurrency in C#
Abstract
Industry leaders provide concurrent libraries because asynchronous & parallel programming are increasingly in demand: responsiveness, scalability, and high-throughput are key elements of all modern applications. However, we know little about how developers use these concurrent libraries in practice and the developer's toolbox for concurrency is very limited.
We present the first study that analyzes the usage of concurrent libraries in large codebases, such as 2258 open-source C# apps comprising 54M SLOC and 1378 open-source Windows Phone apps comprising 12M SLOC. Using this data, we find important problems about use and misuse of concurrency. Inspired by our findings, we designed, evaluated, and implemented several static analyses and refactoring tools.
References
[1]
RavenDB 2nd generation document database. January 2015, http://ravendb.net.
[2]
Oscar Callaú, Romain Robbes, Éric Tanter, and David Röthlisberger. How developers use the dynamic features of programming languages. In MSR '11, page 23, New York, New York, USA, May 2011. ACM Press.
[3]
Mattias De Wael, Stefan Marr, and Tom Van Cutsem. Fork/Join Parallelism in the Wild: Documenting Patterns and Anti-patterns in Java Programs Using the Fork/Join Framework. In PPPJ '14, PPPJ '14, pages 39--50, New York, NY, USA, 2014. ACM.
[4]
Danny Dig, John Marrero, and Michael D. Ernst. Refactoring sequential Java code for concurrency via concurrent libraries. In ICSE '09, pages 397--407, 2009.
[5]
Danny Dig, John Marrero, and Michael D Ernst. How Do Programs Become More Concurrent: A Story of Program Transformations. In IWMSE '11, IWMSE '11, pages 43--50, New York, NY, USA, 2011. ACM.
[6]
Danny Dig, Mihai Tarce, Cosmin Radoi, Marius Minea, and Ralph Johnson. Relooper. In Proceeding of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications - OOPSLA '09, page 793, 2009.
[7]
Robert Dyer, Hridesh Rajan, Hoan Anh Nguyen, and Tien N Nguyen. Mining Billions of AST Nodes to Study Actual and Potential Usage of Java Language Features. In ICSE '14, ICSE 2014, pages 779--790, New York, NY, USA, 2014. ACM.
[8]
Mark Grechanik, Collin McMillan, Luca DeFerrari, Marco Comi, Stefano Crespi, Denys Poshyvanyk, Chen Fu, Qing Xie, and Carlo Ghezzi. An empirical investigation into a large-scale Java open source code repository. In ESEM '10, page 1, New York, New York, USA, September 2010. ACM Press.
[9]
W.G. Griswold and D. Notkin. Program restructuring as an aid to software maintenance. PhD thesis, University of Washington, Seattle, WA, 1992.
[10]
Alex Gyori, Lyle Franklin, Danny Dig, and Jan Lahoda. Crossing the gap from imperative to functional programming through refactoring. In FSE '13, page 543, 2013.
[11]
Mark D Hill and Michael R Marty. Amdahl's Law in the Multicore Era. Computer, 41(7):33--38, July 2008.
[12]
Michael Hoppe and Stefan Hanenberg. Do Developers Benefit from Generic Types? An Empirical Comparison of Generic and Raw Types in Java. OOPSLA '13, pages 457--474, 2013.
[13]
Best Practices in Asynchronous Programming. January 2015, http://msdn.microsoft.com/en-us/magazine/jj991977.aspx.
[14]
Siim Karus and Harald Gall. A study of language usage evolution in open source software. In MSR '11, page 13, New York, New York, USA, May 2011. ACM Press.
[15]
Yu Lin and Danny Dig. A study and toolkit of CHECK-THEN-ACT idioms of Java concurrent collections. Software Testing, Verification and Reliability, 2015.
[16]
Yu Lin, Cosmin Radoi, and Danny Dig. Retrofitting Concurrency for Android Applications Through Refactoring. In FSE '14, FSE 2014, pages 341--352, New York, NY, USA, 2014. ACM.
[17]
Semih Okur and Danny Dig. How do developers use parallel libraries? In FSE '12, New York, New York, USA, November 2012. ACM Press.
[18]
Semih Okur, Cansu Erdogan, and Danny Dig. Converting Parallel Code from Low-Level Abstractions to Higher-Level Abstractions. In Richard Jones, editor, ECOOP '14, volume 8586 of Lecture Notes in Computer Science, pages 515--540. Springer Berlin Heidelberg, 2014.
[19]
Semih Okur, David L. Hartveld, Danny Dig, and Arie van Deursen. A study and toolkit for asynchronous programming in C# . In Proceedings of the ICSE '14, pages 1117--1127, 2014.
[20]
Chris Parnin, Christian Bird, and Emerson Murphy-Hill. Adoption and use of Java generics. Empirical Software Engineering, December 2012.
[21]
Microsoft Asynchronous Programming Patterns. January 2015, http://msdn.microsoft.com/en-us/library/jj152938.aspx.
[22]
The Roslyn Project. January 2015, http://msdn.microsoft.com/en-us/hh500769.
[23]
Martin P. Robillard and Robert DeLine. A field study of API learning obstacles. Empirical Software Engineering, 16(6):703--732, December 2010.
[24]
Don Syme, Tomas Petricek, and Dmitry Lomov. The F# asynchronous programming model. In Proceedings of the 13th international conference on Practical aspects of declarative languages, PADL'11, pages 175--189, Berlin, Heidelberg, 2011. Springer-Verlag.
[25]
Weslley Torres, Gustavo Pinto, Benito Fernandes, João Paulo Oliveira, Filipe Alencar Ximenes, and Fernando Castor. Are Java programmers transitioning to multicore?: a large scale study of java FLOSS. In SPLASH '11 Workshops, SPLASH '11 Workshops, pages 123--128, New York, NY, USA, 2011. ACM.
- Understanding, refactoring, and fixing concurrency in C#
Recommendations
Retrofitting concurrency for Android applications through refactoring
FSE 2014: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software EngineeringRunning compute-intensive or blocking I/O operations in the UI event thread of smartphone apps can severely degrade responsiveness. Despite the fact that Android supports writing concurrent code via AsyncTask, we know little about how developers use ...
Comments
Please enable JavaScript to view thecomments powered by Disqus.Information & Contributors
Information
Published In
November 2015
935 pages
ISBN:9781509000241
- General Chair:
- Myra Cohen,
- Program Chairs:
- Lars Grunske,
- Michael Whalen
Sponsors
In-Cooperation
- IEEE CS
Publisher
IEEE Press
Publication History
Published: 09 November 2015
Check for updates
Qualifiers
- Research-article
Conference
ASE '15: ACM/IEEE International Conference on Automated Software Engineering
November 9 - 15, 2015
Nebraska, Lincoln
Acceptance Rates
Overall Acceptance Rate 82 of 337 submissions, 24%
Contributors
Other Metrics
Bibliometrics & Citations
Bibliometrics
Article Metrics
- 0Total Citations
- 36Total Downloads
- Downloads (Last 12 months)2
- Downloads (Last 6 weeks)1
Reflects downloads up to 19 Nov 2024
Other Metrics
Citations
View Options
Login options
Check if you have access through your login credentials or your institution to get full access on this article.
Sign in