Using CSP to Develop Quality Concurrent Software

  • Derrick G. KourieEmail author
  • Tinus Strauss
  • Loek Cleophas
  • Bruce W. Watson


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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 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. 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: Google Scholar
  3. 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. 4.
    Hassan Gommaa. Software Design Methods for Concurrent and Real-Time Systems Addison- Wesley Professional, 1993.Google Scholar
  5. 5.
    C. A. R. Hoare. Communicating Sequential Processes. Ed. by Jim Davis. (Electronic version). 2004. URL: (visited on 09/16/2016).
  6. 6.
    C. A. R. Hoare. “Communicating sequential processes”. In: Communications of the ACM 26.1 (1983), pp. 100–106.CrossRefGoogle Scholar
  7. 7.
    J. Magee and J. Kramer. Concurrency: State models and Java Programs. 2nd ed. John Wiley, 2006.Google Scholar
  8. 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: Scholar
  9. 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. 10.
    A. W. Roscoe. Understanding Concurrent Systems. 1st. New York, NY, USA: Springer Verlag New York, Inc., 2010. ISBN: 9781848822573.CrossRefGoogle Scholar
  11. 11.
    Marlene Maria Ross. “Unity-inspired object-oriented concurrent system development”. PhD thesis. University of Pretoria, 2001.Google Scholar
  12. 12.
    Adam T. Sampson. “Process-oriented Patterns for Concurrent Software Engineering”. D.Phil thesis. University of Kent, 2008.Google Scholar
  13. 13.
    Marthinus David Strauss. “Process-based Decomposition and Multicore Performance: Case Studies from Stringology”. PhD thesis. University of Pretoria, 2017.Google Scholar
  14. 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. 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:
  16. 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:
  17. 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.CrossRefGoogle Scholar

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  • Derrick G. Kourie
    • 1
    Email author
  • Tinus Strauss
    • 1
  • Loek Cleophas
    • 1
    • 2
  • Bruce W. Watson
    • 1
    • 3
  1. 1.Department of Information ScienceStellenbosch UniversityStellenboschSouth Africa
  2. 2.Department of Mathematics and Computer ScienceEindhoven University of TechnologyEindhovenThe Netherlands
  3. 3.Centre for Artificial Intelligence ResearchCSIR Meraka InstitutePretoriaSouth Africa

Personalised recommendations