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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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.
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
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.
Hassan Gommaa. Software Design Methods for Concurrent and Real-Time Systems Addison- Wesley Professional, 1993.
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).
C. A. R. Hoare. “Communicating sequential processes”. In: Communications of the ACM 26.1 (1983), pp. 100–106.
J. Magee and J. Kramer. Concurrency: State models and Java Programs. 2nd ed. John Wiley, 2006.
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.
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.
A. W. Roscoe. Understanding Concurrent Systems. 1st. New York, NY, USA: Springer Verlag New York, Inc., 2010. ISBN: 9781848822573.
Marlene Maria Ross. “Unity-inspired object-oriented concurrent system development”. PhD thesis. University of Pretoria, 2001.
Adam T. Sampson. “Process-oriented Patterns for Concurrent Software Engineering”. D.Phil thesis. University of Kent, 2008.
Marthinus David Strauss. “Process-based Decomposition and Multicore Performance: Case Studies from Stringology”. PhD thesis. University of Pretoria, 2017.
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.
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.
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.
J. Christopher Westland. “The cost of errors in software development: evidence from industry”. In: Journal of Systems and Software 62 (2002), pp. 1–9.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this chapter
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)