MODULAR CONCURRENCY - A New Approach to Manageable Software

Peter Grogono, Brian Shearing



Software systems bridge the gap between the information processing needs of the world and computer hardware. As system requirements grow in complexity and hardware evolves, the gap does not necessarily widen, but it undoubtedly changes. Although today’s applications require concurrency and today’s hardware provides concurrency, programming languages remain predominantly sequential. Concurrent programming is considered too difficult and too risky to be practiced by “ordinary programmers”. Software development is moving towards a paradigm shift, following which concurrency will play a fundamental role in programming. In this paper, we introduce an approach that we believe will reduce the difficulties of developing and maintaining certain kinds of concurrent software. Building on earlier work but applying modern insights, we propose a programming paradigm based on processes that exchange messages. Innovative features include scale-free program structure, extensible modular components with multiple interfaces, protocols that specify the form of messages, and separation of semantics and deployment. We suggest that it may be possible to provide the flexibility and expressiveness of programming with processes while bounding the complexity caused by nondeterminism.


  1. Ada (1995). Ada 95 Reference Manual. Revised International Standard ISO/IEC 8652:1995. Accessed 2008/03/12.
  2. Armstrong, J. (2007). A history of Erlang. In HOPL III: Proceedings of the Third ACM SIGPLAN Conference on the History of Programming Languages, New York, NY, USA, pp. 6.1-6.26. ACM Press.
  3. Barnes, F. R. and P. H. Welch (2006). Occam-p : blending the best of CSP and the p-calculus. Accessed 2008/03/13.
  4. Benton, N., L. Cardelli, and C.Fournet (2004, September). Modern concurrency abstractions for C]. ACM Transactions on Programming Languages and Systems 26(5), 769-804.
  5. Boehm, H.-J. (2005). Threads cannot be implemented as a library. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 7805), pp. 261-268.
  6. Brinch Hansen, P. (1987, January). Joyce-a programming language for distributed systems. Software-Practice and Experience 17(1), 29-50.
  7. Brinch Hansen, P. (1996). The Search for SimplicityEssays in Parallel Programming. IEEE Computer Society Press.
  8. Dijkstra, E. W. (1968). Cooperating sequential processes. In F. Genuys (Ed.), Programming Languages: NATO Advanced Study Institute, pp. 43-112. Academic Press.
  9. Grogono, P. and B. Shearing (2008). MEC Reference Manual. grogono/- Erasmus/erasmus.html.
  10. Güntensperger, R. and J. Gutknecht (2004, May). Active C]. In 2nd International Workshop .NET Technologies'2004, pp. 47-59.
  11. Henzinger, T. A., R. Jhala, and R. Majumdar (2005). Permissive interfaces. In ESEC/FSE-13: Proceedings of the 10th European Software Engineering Conference (held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering), pp. 31-40.
  12. Hoare, C. A. R. (1974). Hints on programming language design. In C. Bunyan (Ed.), Computer Systems Reliability, Volume 20 of State of the Art Report, pp. 505- 534. Pergamon. Reprinted in (Hoare and Jones, 1989).
  13. Hoare, C. A. R. (1978, August). Communicating sequential processes. Communications of the ACM 21(8), 666- 677.
  14. Hoare, C. A. R. and C. Jones (1989). Essays in Computing Science. Prentice Hall.
  15. Hunt, G. C. and J. R. Larus (2007). Singularity: rethinking the software stack. SIGOPS Operating System Review 41(2), 37-49.
  16. Jackson, M. (1978). Information systems: Modelling, sequencing and transformation. In Proceedings of the 3rd International Conference on Software Engineering (ICSE 1978), pp. 72-81.
  17. Jackson, M. (1980). Information systems: Modelling, sequencing and transformation. In R. McKeag and A. MacNaughten (Eds.), On the Construction of Programs. Cambridge University Press.
  18. Kay, A. C. (1993). The early history of Smalltalk. ACM SIGPLAN Notices 28(3), 69-95.
  19. Khorfage, W. and A. P. Goldberg (1995, April). Hermes language experiences. Software-Practice and Experience 25(4), 389-402.
  20. Lameed, N. and P. Grogono (2008). Separating program semantics from deployment. These proceedings.
  21. Lea, D., P. Soper, and M. Sabin (2004). The Java Isolation API: Introduction, applications and inspiration. Accessed 2007/06/14.
  22. Lee, E. A. (2006, May). The problem with threads. IEEE Computer 39(5), 33-42.
  23. Matsuoka, S. and A. Yonezawa (1993). Analysis of inheritance anomaly in object-oriented concurrent programming language. In Research Directions in Concurrent Object-Oriented Programming, pp. 107-150. MIT Press.
  24. Object Management Group (2007, November). OMG Unified Modeling Language (OMG UML), Superstructure, V2.1.2. Superstructure/PDF/. Accessed 2008/03/15.
  25. Soper, P. (2002). JSR 121: Application Isolation API Specification. Java Specification Requests. final/jsr121/index.html. Accessed 2008/03/15.
  26. Sutter, H. and J. Larus (2005, September). Software and the concurrency revolution. ACM Queue 3(7), 54-62.
  27. van Roy, P. and S. Haridi (2001). Concepts, Techniques, and Models of Computer Programming. MIT Press.

Paper Citation

in Harvard Style

Grogono P. and Shearing B. (2008). MODULAR CONCURRENCY - A New Approach to Manageable Software . In Proceedings of the Third International Conference on Software and Data Technologies - Volume 1: ICSOFT, ISBN 978-989-8111-51-7, pages 47-54. DOI: 10.5220/0001870900470054

in Bibtex Style

author={Peter Grogono and Brian Shearing},
title={MODULAR CONCURRENCY - A New Approach to Manageable Software},
booktitle={Proceedings of the Third International Conference on Software and Data Technologies - Volume 1: ICSOFT,},

in EndNote Style

JO - Proceedings of the Third International Conference on Software and Data Technologies - Volume 1: ICSOFT,
TI - MODULAR CONCURRENCY - A New Approach to Manageable Software
SN - 978-989-8111-51-7
AU - Grogono P.
AU - Shearing B.
PY - 2008
SP - 47
EP - 54
DO - 10.5220/0001870900470054