skip to main content
10.1145/1869459.1869523acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Concurrency by modularity: design patterns, a case in point

Published: 17 October 2010 Publication History

Abstract

General purpose object-oriented programs typically aren't embarrassingly parallel. For these applications, finding enough concurrency remains a challenge in program design. To address this challenge, in the Panini project we are looking at reconciling concurrent program design goals with modular program design goals. The main idea is that if programmers improve the modularity of their programs they should get concurrency for free. In this work we describe one of our directions to reconcile these two goals by enhancing Gang-of-Four (GOF) object-oriented design patterns. GOF patterns are commonly used to improve the modularity of object-oriented software. These patterns describe strategies to decouple components in design space and specify how these components should interact. Our hypothesis is that if these patterns are enhanced to also decouple components in execution space applying them will concomitantly improve the design and potentially available concurrency in software systems. To evaluate our hypothesis we have studied all 23 GOF patterns. For 18 patterns out of 23, our hypothesis has held true. Another interesting preliminary result reported here is that for 17 out of these 18 studied patterns, concurrency and synchronization concerns were completely encapsulated in our concurrent design pattern framework.

References

[1]
}}P. America. Issues in the design of a parallel object-oriented language. Formal Aspects of Computing, 1(4):366--411, 1989.
[2]
}}N. Benton, L. Cardelli, and C. Fournet. Modern concurrency abstractions for C#. ACM Trans. Program. Lang. Syst., 26(5):769--804, 2004.
[3]
}}E. D. Berger, T. Yang, T. Liu, and G. Novark. Grace: safe multithreaded programming for C/C. In Proceedings of the Conference on Object Oriented Programming Systems, Languages and Applications, pages 81--96, 2009.
[4]
}}R. D. Blumofe, C. F. Joerg, B. C. Kuszmaul, C. E. Leiserson, K. H. Randall, and Y. Zhou. Cilk: an efficient multithreaded runtime system. In PPOPP, pages 207--216, 1995.
[5]
}}R. L. Bocchino, Jr., V. S. Adve, D. Dig, S. V. Adve, S. Heumann, R. Komuravelli, J. Overbey, P. Simmons, H. Sung, and M. Vakilian. A type and effect system for deterministic parallel java. In Proceedings of the Conference on Object Oriented Programming Systems, Languages and Applications, pages 97--116, 2009.
[6]
}}P. Charles, C. Grothoff, V. Saraswat, C. Donawa, A. Kielstra, K. Ebcioglu, C. von Praun, and V. Sarkar. X10: an object-oriented approach to non-uniform cluster computing. In Proceedings of the Conference on Object Oriented Programming Systems, Languages and Applications, pages 519--538, 2005.
[7]
}}R. Cunningham and E. Kohler. Tasks: language support for event-driven programming. In Conference on Hot Topics in Operating Systems, Berkeley, CA, USA, 2005.
[8]
}}D. Dig, J. Marrero, and M. D. Ernst. Refactoring sequential java code for concurrency via concurrent libraries. In ICSE, pages 397--407, 2009.
[9]
}}J. Fischer, R. Majumdar, and T. Millstein. Tasks: language support for event-driven programming. In PEPM, pages 134--143, 2007.
[10]
}}M. Frigo, C. E. Leiserson, and K. H. Randall. The implementation of the Cilk-5 multithreaded language. In the ACM conference on Programming language design and implementation (PLDI), pages 212--223, 1998.
[11]
}}E. Gamma and K. Beck. JUnit. http://www. junit. org.
[12]
}}E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., 1995.
[13]
}}M. Krohn, E. Kohler, and M. F. Kaashoek. Events can make sense. In USENIX, 2007.
[14]
}}M. Kulkarni, K. Pingali, B. Walter, G. Ramanarayanan, K. Bala, and L. P. Chew. Optimistic parallelism requires abstractions. In PLDI, pages 211--222, 2007.
[15]
}}D. Lea. Concurrent Programming in Java. Second Edition: Design Principles and Patterns. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1999.
[16]
}}D. Lea. A Java Fork/Join Framework. In The Java Grande Conference, pages 36--43, 2000.
[17]
}}D. Leijen, W. Schulte, and S. Burckhardt. The design of a task parallel library. In Proceedings of the Conference on Object Oriented Programming Systems, Languages and Applications, pages 227--242, 2009.
[18]
}}Y. Long, S. L. Mooney, T. Sondag, and H. Rajan. Implicit invocation meets safe, implicit concurrency. In GPCE '10: Ninth International Conference on Generative Programming and Component Engineering, October 2010.
[19]
}}C. Lopes. D: A language framework for distributed programming. PhD thesis, Northeastern University, 1997.
[20]
}}T. G. Mattson, B. A. Sanders, and B. L. Massingill. A Pattern Language for Parallel Programming. Addison Wesley Software Patterns Series, 2004.
[21]
}}M. D. McCool. Structured parallel programming with deterministic patterns. In 2nd USENIX workshop on Hot Topics in Parallelism, 2010.
[22]
}}J. Ousterhout. Why threads are a bad idea (for most purposes). In ATEC, January 1996.
[23]
}}V. Pankratius, C. Schaefer, A. Jannesari, and W. F. Tichy. Software engineering for multicore systems: an experience report. In IWMSE workshop, pages 53--60, 2008.
[24]
}}P. Pratikakis, J. Spacco, and M. Hicks. Transparent Proxies for Java Futures. In OOPSLA, pages 206--223, 2004.
[25]
}}H. Rajan, Y. Long, S. Kautz, S. Mooney, and T. Sondag. Panini project's website. http://paninij.sourceforge.net, 2010.
[26]
}}M. C. Rinard and M. S. Lam. The design, implementation, and evaluation of Jade. ACM Trans. Program. Lang. Syst., 20(3):483--545, 1998.
[27]
}}J. Robert H. Halstead. Multilisp: A Language for Concurrent Symbolic Computation. ACM Trans. Program. Lang. Syst., 7(4):501--538, 1985.
[28]
}}Saha, B. ηl. McRT-S™: a high performance software transactional memory system for a multi-core runtime. In PPoPP, pages 187--197, 2006.
[29]
}}D. C. Schmidt, H. Rohnert, M. Stal, and D. Schultz. Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects. John Wiley & Sons, Inc., New York, NY, USA, 2000.
[30]
}}B. Shriver and P. Wegner. Research directions in object-oriented programming, 1987.
[31]
}}F. Towfic, M. Greenlee, and V. Honavar. Aligning biomolecular networks using modular graph kernels. In 9th International Workshop on Algorithms in Bioinformatics (WABI'09), 2009.
[32]
}}A. Welc, S. Jagannathan, and A. Hosking. Safe Futures for Java. In OOPSLA, pages 439--453, 2005.
[33]
}}A. Yonezawa. ABCL: An object-oriented concurrent system, 1990.
[34]
}}A. Yonezawa and M. Tokoro. Object-oriented concurrent programming, 1990.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '10: Proceedings of the ACM international conference on Object oriented programming systems languages and applications
October 2010
984 pages
ISBN:9781450302036
DOI:10.1145/1869459
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 45, Issue 10
    OOPSLA '10
    October 2010
    957 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1932682
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 October 2010

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. concurrency
  2. design decoupling
  3. design patterns
  4. ease of program design
  5. modularity
  6. multi-core computing
  7. multicore processors
  8. scalability

Qualifiers

  • Research-article

Conference

SPLASH '10
Sponsor:

Acceptance Rates

Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)9
  • Downloads (Last 6 weeks)1
Reflects downloads up to 01 Jan 2025

Other Metrics

Citations

Cited By

View all

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