For current students & staff

Search

School of Computing

Process-Oriented Patterns for Concurrent Software
Engineering

Adam Sampson

PhD thesis, Computing, University of Kent, CT2 7NF, September 2008.

Abstract

Abstract
Concurrency is unavoidable in modern software development, owing to the increasing
complexity of computer systems and the widespread use of parallel computer hardware.
Conventional approaches to concurrency are fraught with danger: in particular,
uncontrolled access to shared resources, poor scalability and the inability of the programmer
to reason about the correctness of a program.
Process-oriented programming is a software design approach that offers solutions
to many of these problems. A process-oriented program is constructed as a network
of isolated, concurrent processes that interact only using synchronisation objects such
as channels and barriers. Using techniques drawn from CSP and the p-calculus, design
rules can be constructed that enable the programmer to easily build systems with
known safety properties. Since process-oriented programs expose by their nature a
high degree of explicit concurrency, they can be efficiently distributed across multiple
processors and clusters of machines.
This thesis describes a pattern language for the engineering of process-oriented programs.
Design patterns describe reusable, adaptable solutions to common problems
that may arise during the design and development of a system. A pattern language
serves the dual purposes of documenting the proven design solutions developed by a
community, and providing a common technical vocabulary.
The patterns described in this thesis are drawn from a variety of existing processoriented
real-world applications, and have been used to construct new applications in
fields such as embedded systems, multimedia processing, and complex systems simulation.
While much of this work has been conducted using the occam-p programming
language, the patternsand the new language and library facilities they informare
applicable to process-oriented systems built in any language.
ii