skip to main content
10.1145/1370256.1370270acmotherconferencesArticle/Chapter ViewAbstractPublication PagesuccsConference Proceedingsconference-collections
research-article

Concurrent software engineering: preparing for paradigm shift

Published:12 May 2008Publication History

ABSTRACT

Software systems bridge the gap between information processing needs and available computer hardware. As system requirements grow in complexity and hardware evolves, the gap does not necessarily widen, but it certainly 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". However, software engineering is moving towards a paradigm shift, following which concurrency will play a more fundamental role in programming languages. We discuss some of the implications of the shift towards process-oriented programming. We outline some of the features of our own process-oriented language. Finally, we review the potential impact on software engineering and on software development processes.

References

  1. Ada. Ada 95 reference manual. Revised International Standard ISO/IEC 8652:1995, 1995. www.adahome.com/rm95. Accessed 2008/03/12.Google ScholarGoogle Scholar
  2. Joe Armstrong. A history of Erlang. In HOPL III: Proceedings of the Third ACM SIGPLAN Conference on the History of Programming Languages, pages 6.1--6.26, New York, NY, USA, 2007. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Fred R. M. Barnes and Peter H. Welch. Occam-π : blending the best of CSP and the π-calculus. www.cs.kent.ac.uk/projects/ofa/kroc. Accessed 2008/03/13.Google ScholarGoogle Scholar
  4. Nick Benton, Luca Cardelli, and Cédric Fournet. Modern concurrency abstractions for C#. ACM Transactions on Programming Languages and Systems, 26(5):769--804, September 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Andrew P. Black, Jie Huang, Rainer Koster, Jonathan Walpole, and Calton Pu. Infopipes: An abstraction for multimedia streaming. Multimedia Systems, 8:406--419, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Hans-J. Boehm. Threads cannot be implemented as a library. In PLDI '05: Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 261--268. ACM Press, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Per Brinch Hansen. The programming language Concurrent Pascal. IEEE Transactions on Software Engineering, 1(2):199--207, June 1975.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Per Brinch Hansen. Joyce---a programming language for distributed systems. Software---Practice and Experience, 17(1):29--50, January 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Per Brinch Hansen. The Search for Simplicity---Essays in Parallel Programming. IEEE Computer Society Press, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Mark Brunelli. Question & Answer: Smalltalk with object-oriented programming pioneer Kay. searchsoa.techtarget.com/news/interview/0,289202,-sid26_gci962762,00.html. Accessed 2008/03/25.Google ScholarGoogle Scholar
  11. R. H. Campbell and A. N. Habermann. The specification of process synchronization by path expressions. In G. Goos and J. Hartmanis, editors, Lecture Notes in Computer Science, volume 16, pages 89--102. Springer, 1974. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Larry Constantine and Ed Yourdon. Structured Design. Prentice Hall, 1979.Google ScholarGoogle Scholar
  13. E. W. Dijkstra. Cooperating sequential processes. Technical Report Technical Report EWD-123, Technological University, Eindhoven, The Netherlands, 1965. Reprinted in {17}.Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Reedy Feggins. Designing component-based architectures with Rational Rose RealTime. http://www.ibm.com/developerworks/rational/library/-797.html. Accessed 2008/03/25.Google ScholarGoogle Scholar
  15. Robert W. Floyd. The paradigms of programming. Communications of the ACM, 22(8):455--460, 1979. Turing Award acceptance speech. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. F. Genuys, editor. Programming Languages (NATO Advanced Study Institute). Academic Press, 1968.Google ScholarGoogle Scholar
  18. A. Goldberg and D. Robson. Smalltalk-80, The Language and its Implementation. Addison-Wesley, 1983, Reprinted with corrections 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Peter Grogono and Brian Shearing. MEC Reference Manual. Technical Report TR E-06, Department of Computer Science and Software Engineering, Concordia University, February 2008.Google ScholarGoogle Scholar
  20. Raphael Güntensperger and Jürg Gutknecht. Active C#. In 2nd International Workshop .NET Technologies'2004, pages 47--59, May 2004.Google ScholarGoogle Scholar
  21. C. A. R. Hoare. Communicating sequential processes. Communications of the ACM, 21(8):666--677, August 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Andrew Hunt and David Thomas. The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Galen C. Hunt and James R. Larus. Singularity: rethinking the software stack. SIGOPS Operating System Review, 41(2):37--49, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. M. A. Jackson. Information systems: Modelling, sequencing and transformation. In R. M. McKeag and A. M. MacNaughten, editors, On the Construction of Programs. Cambridge University Press, 1980.Google ScholarGoogle Scholar
  25. Willard Khorfage and Arthur P. Goldberg. Hermes language experiences. Software---Practice and Experience, 25(4):389--402, April 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Thomas Kuhn. The Structure of Scientific Revolutions. University of Chicago Press, 1962. Third Edition published in 1996.Google ScholarGoogle ScholarCross RefCross Ref
  27. Nurudeen Lameed. Implementing concurrency in a processs-based language. Master's thesis, Department of Computer Science and Software Engineering, Concordia University, Montreal, March 2008.Google ScholarGoogle Scholar
  28. Doug Lea, Pete Soper, and Miles Sabin. The Java Isolation API: Introduction, applications and inspiration. bitser.net/isolate-interest/slides.pdf. Accessed 2007/06/14.Google ScholarGoogle Scholar
  29. Edward A. Lee. The problem with threads. IEEE Computer, 39(5):33--42, May 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Barbara Liskov. Primitives for distributed computing. In SOSP '79: Proceedings of the Seventh ACM Symposium on Operating Systems Principles, pages 33--42, New York, NY, USA, 1979. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Jeff Magee and Jeff Kramer. Concurency; State Models and Java Programs. Wiley, second edition, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. S. Matsuoka and A. Yonezawa. Analysis of inheritance anomaly in object-oriented concurrent programming language. In Research Directions in Concurrent Object-Oriented Programming, pages 107--150. MIT Press, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. D. May. Occam. ACM SIGPLAN Notices, 18(4):69--79, April 1983 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Giuseppe Milicia and Vladimiro Sassone. The inheritance anomaly: ten years after. In SAC '04: Proceedings of the 2004 ACM Symposium on Applied Computing, pages 1267--1274, New York, NY, USA, 2004. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Robin Milner. A Calculus of Communicating Systems. Springer, 1980. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Robin Milner. Communicating and Mobile Systems: The π Calculus. Cambridge University Press, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. K. Nygaard and O-J. Dahl. The development of the SIMULA language. In R. Wexelblat, editor, History of Programming Languages, pages 439--493. Academic Press, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Bran Selic. What's new in UML 2.0? IBM White Paper, April 2005. Available at ftp://ftp.software.ibm.com/software/rational/web/whitepapers/intro2uml2.pdf. Accessed 2008/03/25.Google ScholarGoogle Scholar
  39. Pete Soper. JSR 121: Application Isolation API Specification. Java Specification Requests. http://jcp.org/aboutJava/communityprocess/final/-jsr121/index.html. Accessed 2008/03/15.Google ScholarGoogle Scholar
  40. Robert Strom. HERMES: A Language for Distributed Computing. Prentice Hall, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Herb Sutter and James Larus. Software and the concurrency revolution. ACM Queue, 3(7):54--62, September 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Peter van Roy and Seif Haridi. Concepts, Techniques, and Models of Computer Programming. MIT Press, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Concurrent software engineering: preparing for paradigm shift

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Other conferences
      C3S2E '08: Proceedings of the 2008 C3S2E conference
      May 2008
      240 pages
      ISBN:9781605581019
      DOI:10.1145/1370256

      Copyright © 2008 ACM

      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]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 12 May 2008

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate12of42submissions,29%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader