Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1109/ASE.2015.82acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article

Understanding, refactoring, and fixing concurrency in C#

Published: 09 November 2015 Publication History

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.

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ASE '15: Proceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering
November 2015
935 pages
ISBN:9781509000241

Sponsors

In-Cooperation

  • IEEE CS

Publisher

IEEE Press

Publication History

Published: 09 November 2015

Check for updates

Qualifiers

  • Research-article

Conference

ASE '15
Sponsor:

Acceptance Rates

Overall Acceptance Rate 82 of 337 submissions, 24%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 36
    Total 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

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media