Skip to main content

Using CSP to Develop Quality Concurrent Software

  • Chapter
  • First Online:
Principled Software Development

Abstract

A method for developing concurrent software is advocated that centres on using CSP to specify the behaviour of the system. A small example problem is used to illustrate the method. The problem is to develop a simulation system that keeps track of and reports on the least unique bid of multiple streams of randomly generated incoming bids. The problem’s required high-level behaviour is specified in CSP, refined down to the level of interacting processes and then verified for refinement and behavioural correctness using the FDR refinement checker. Heuristics are used to map the CSP processes to a GO implementation. Interpretive reflections are offered of the lessons learned as a result of the exercise.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Gustavo Carvalho et al. “NAT2TEST tool: From natural language requirements to test cases based on CSP”. In: Software Engineering and Formal Methods Springer, 2015, pp. 283–290.

    Google Scholar 

  2. Thomas Gibson-Robinson et al. “FDR: From Theory to Industrial Application”. In: Concur rency Security and Puzzles: Essays Dedicated to Andrew William Roscoe on the Occasion of His 60th Birthday Ed. by Thomas Gibson-Robinson, Philippa Hopcroft, and Ranko Lazicć Cham: Springer International Publishing, 2017, pp. 65–87. ISBN: 978-3-319-51046-0. DOI: 10.1007/978-3-319-51046-0_4. URL: https://doi.org/10.1007/978-3-319-51046-0_4

    Google Scholar 

  3. Thomas Gibson-Robinson et al. “FDR3 — A Modern Refinement Checker for CSP”. In: Tools and Algorithms for the Construction and Analysis of Systems. Ed. by Erika Ábrahám and Klaus Havelund. Vol. 8413. Lecture Notes in Computer Science. 2014, pp. 187–201.

    Google Scholar 

  4. Hassan Gommaa. Software Design Methods for Concurrent and Real-Time Systems Addison- Wesley Professional, 1993.

    Google Scholar 

  5. C. A. R. Hoare. Communicating Sequential Processes. Ed. by Jim Davis. (Electronic version). 2004. URL: http://www.usingcsp.com/cspbook.pdf (visited on 09/16/2016).

  6. C. A. R. Hoare. “Communicating sequential processes”. In: Communications of the ACM 26.1 (1983), pp. 100–106.

    Article  Google Scholar 

  7. J. Magee and J. Kramer. Concurrency: State models and Java Programs. 2nd ed. John Wiley, 2006.

    Google Scholar 

  8. Susan Owicki and David Gries. “An axiomatic proof technique for parallel programs I”. In: Acta Informatica 6.4 (Dec. 1976), pp. 319–340. ISSN: 1432-0525. DOI: 10.1007/BF00268134. URL: https://doi.org/10.1007/BF00268134.

    Article  MathSciNet  Google Scholar 

  9. Carl G. Ritson and Peter H. Welch. “A Process-Oriented Architecture for Complex System Modelling”. In: Concurrency and Computation: Practice and Experience 22 (Mar. 2010), pp. 182–196. DOI: 10.1002/cpe.1433 URL: http://wwwcs.kent.acuk/pubs/2010/3066.

  10. A. W. Roscoe. Understanding Concurrent Systems. 1st. New York, NY, USA: Springer Verlag New York, Inc., 2010. ISBN: 9781848822573.

    Book  Google Scholar 

  11. Marlene Maria Ross. “Unity-inspired object-oriented concurrent system development”. PhD thesis. University of Pretoria, 2001.

    Google Scholar 

  12. Adam T. Sampson. “Process-oriented Patterns for Concurrent Software Engineering”. D.Phil thesis. University of Kent, 2008.

    Google Scholar 

  13. Marthinus David Strauss. “Process-based Decomposition and Multicore Performance: Case Studies from Stringology”. PhD thesis. University of Pretoria, 2017.

    Google Scholar 

  14. Tinus Strauss et al. “A Process-Oriented Implementation of Brzozowski’s DFA Construction Algorithm”. In: Proceedings of the Prague Stringology Conference 2014, Prague Czech Republic, September 1–3, 2014. Ed. by Jan Holub and Jan Zdárek. Department of Theoretical Computer Science, Faculty of Information Technology, Czech Technical University in Prague, 2014, pp. 17–29. ISBN: 978-80-01-05547-2.

    Google Scholar 

  15. Tinus Strauss et al. “Process-Based Aho-Corasick Failure Function Construction”. In: Communicating Process Architectures 2015. Proceedings of the 37th WoTUG Technical Meeting 23–26 August 2015, University of Kent, UK. Ed. by Kevin Chalmers et al. Open Channel Publishing Ltd., 2015, pp. 183–206. ISBN: 0993438504. URL: http://wotug.org/cpa2015/programme.shtml.

  16. Peter H. Welch and Jan B. Pedersen. “Santa Claus: Formal Analysis of a Process-oriented Solution”. In: ACM Transactions on Programming Languages and Systems 32.4 (Apr 2010), 14:1–14:37. ISSN: 0164-0925. DOI: 1.1145/1734206.1734211 URL: http://doi.acm.org/10.1145/1734206.1734211.

  17. J. Christopher Westland. “The cost of errors in software development: evidence from industry”. In: Journal of Systems and Software 62 (2002), pp. 1–9.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Derrick G. Kourie .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Kourie, D.G., Strauss, T., Cleophas, L., Watson, B.W. (2018). Using CSP to Develop Quality Concurrent Software. In: Müller, P., Schaefer, I. (eds) Principled Software Development. Springer, Cham. https://doi.org/10.1007/978-3-319-98047-8_11

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-98047-8_11

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-98046-1

  • Online ISBN: 978-3-319-98047-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics