Communicating Process Architectures: the Future for Systems
Submitting Institution
University of KentUnit of Assessment
Computer Science and InformaticsSummary Impact Type
TechnologicalResearch Subject Area(s)
Information and Computing Sciences: Artificial Intelligence and Image Processing, Computation Theory and Mathematics, Computer Software
Summary of the impact
Modern processor architectures (networked multi/many-core nodes),
together with society's expectation of evermore-complex applications,
require fluent mastery of concurrency. To enable this mastery, in the last
two decades our group has taught, researched and developed fundamental
notions of concurrency, new programming languages
(occam-pi, and the KRoC toolset), libraries (JCSP, CCSP, C++CSP,
CHP), runtime systems (the KRoC/CCSP multicore scheduler) and tools
based on formal process algebra (Hoare's CSP, and Milner's pi-calculus).
Our work has had impact in providing new mechanisms for software
development in a number of sectors such as chip design, large-scale
real-time systems, formal interfaces and testing and the space industry.
Testimonials supporting this are available from a variety of industrial
and commercial sources (NXP Semiconductors, Big Bee Consultants, Philips
Healthcare, 4Links Ltd. and Microsoft Research Cambridge). The breadth of
impact of the work is evidenced by download statistics, as well as by
third-party contributions to libraries and documentation.
Underpinning research
Since 1993, our research has focussed on transforming the ways computer
systems are designed, verified, implemented and maintained. Our key
insight, which went against received wisdom when we started this work, is
that concurrency is a necessary element for all those stages. Our research
has focussed on an approach based on rich mathematical theories of
communicating processes (CSP and pi-calculus), combined with well-engineered
and highly efficient languages, libraries, run- time systems and
tools. Our work has contributed significantly to the latter, enabling
concurrency to take its rightful place as a fundamental, simple and
powerful tool for the production of systems, with performance and
responsiveness achieved as a natural consequence, rather than as a primary
aim. We call this approach Communicating Process Architectures (CPA).
Amongst other things, these led (over the next 17 years) to our
development of the occam-pi [1] programming language: a careful blending
of the dynamics of Milner's pi-calculus (mobile channels and processes)
with Hoare's CSP underpinning of classical occam, together with
significant extension of CSP capabilities (e.g. barriers, shared
channel-ends). Supporting this, we have researched and developed the
lightest (by some margin) multicore scheduler available today, on which
applications automatically and effectively scale with the number of cores
supplied [2] and a fast algorithm for the resolution of general CSP choice
(between barriers, input/output guards and timeouts) [3]. In parallel with
this, we have researched, designed, implemented, documented, open-source
published, used and demonstrated a set of libraries making available this
extended occam/CSP/pi-calculus model for `mainstream' languages: Java
(JCSP), C (CCSP), C++ (C++CSP) and Haskell (CHP).
Our research has been supported through a series of EPSRC funded
projects, most recently: TUNA (EP/C516966/1; £60,867; 2005 -2007; with
Universities of York and Surrey); RMoX (EP/D061822/1; £210,405; 2006
-2010); CoSMoS (EP/E049419/1; £398,058 to Kent; 2007-2012).
These projects focussed on applying the ideas of CPA and massively
parallel process-orientation to, respectively, the engineering of
nano-scale machines, operating systems and the modelling and control of
complex systems with emergent behaviours. Representative papers are [4, 5,
6]. Most recently, we have proposed extensions to occam-pi to set up and
model-check verification assertions about program behaviour within the
program: the idea being that, in the near future, verification will
be so crucial that programmers will need to do this as a matter of course
(and without needing to become experts in the underlying formal process
algebra). Numerous people at Kent have been and are engaged on this work:
Peter Welch (Professor, since 1993), Fred Barnes (PhD/Lecturer, since
1999), Adam Sampson (PhD/RA, 2007-11), Carl Ritson (PhD/RA, since 2006),
Neil Brown (PhD/RA, since 2005), Christian Jacobsen (PhD, 2005-09), Matt
Jadud (PhD, 2005-09), Damian Dimmich (PhD, 2006-10), Jon Simpson (PhD,
2007-13), Jim Moores (PhD, 1995-99), Kevin Vella (PhD, 1997-2002) and
Mario Schweigler (2001-06).
Professor Welch was elected Member of IFIP Working Group 2.4 (Systems
Implementation Technology) in 2002, where his presentations [section 5: U1]
have impact on key researchers in major international companies (including
IBM Research, Microsoft, Adobe, Hewlett-Packard, Azul Systems) and
universities (such as Purdue, Irvine, Colorado, CMU, Waterloo, Linkøping,
Karlsruhe, Pretoria, Cape Town, Stuttgart, Paderborn, Queensland,
Pretoria). As a result of this, he was invited by the Software Engineering
Institute (SEI) at Carnegie-Mellon University for a sabbatical term in the
fall of 2007, where he presented a course on process oriented design and
occam-pi [U2]
and collaborated with senior researchers on emergent behaviour in very
large scale parallel systems. This continues and two of the researchers
(Wallnau, Klein) are co-authors of [6].
References to the research
[** - numbers 1,2,5 are the most significant research contributions]
1. ** Communicating
Mobile Processes: Introducing occam-pi. Peter H. Welch and Frederick
R.M. Barnes. In A.E. Abdallah, C.B. Jones, and J.W. Sanders, editors, 25
Years of CSP, volume 3525 of LNCS, pages 175-210. Springer
Verlag, 2005. [Cited 66 times in Scopus.]
Details of the impact
Our work has had direct impact through providing new mechanisms for
software development in a number of sectors, including semiconductor
design, large-scale real time systems, healthcare and space. Testimonial
statements are provided as evidence in each of these sectors, and download
data are also presented to show the breadth of take up. The impact has
been amplified by others who have contributed to the libraries and to
documentation, as well as through developing their own versions of the
JCSP library in different programming languages.
JCSP in Design and Build of a New Compute Platform: Dr. Aly Syed
(NXP Semiconductors, the Netherlands) [S2]
has used JCSP to simulate the working of a parallel distributed system of
sensors and actuators in the design and development of a new type of
compute engine for these nodes. Once the design was validated, the system
was migrated to FPGA and a real wireless communication system without
introducing logic errors. He writes: "we were able to concentrate on
designing and building a new compute platform with some sensors and
actuators attached to them, using JCSP to simulate communication. This
was a great help as JCSP made it easy to program parallel behaviour in
our system and we did not have to spend a lot of effort on this part of
the problem. Out of this work, NXP Semiconductors have filed a European
patent application, number EP12/190957.6, entitled: An
Interpretation Engine and Associated Method. This patent application
cannot be made public at this time but in about 1 year [2014], it will
be available ... . "
JCSP in Large Scale High Concurrency Projects: Dr. Rick Beton (Big
Bee Consultants Ltd, UK), [S3]
notes the importance of JCSP in his company's solutions for customer
projects: "We have been able to use JCSP in some very effective ways
in a range of projects. The largest design-in was in the London
Congestion Charge control centre. Here, JCSP orchestrates the Java
server that collected the feeds from nearly 1000 cameras, with 7 TCP
connections per camera. This task is highly concurrent and high volume
(typically 1.5M records captured per day). ... JCSP has been
found to be an effective way of synchronising and exchanging data. In my
work, JCSP is now also being used from Scala and other JVM-based
languages."
Formalising Interfaces and Automated Testing: Dr. Marcel Boosten
(Philips Healthcare, the Netherlands) [S4]
writes: "Within Philips Healthcare, the ideas that
came out of Kent primarily (but also other Universities present at the
WoTUG conferences in the years 1998..2006) have inspired [us] to look at
communication protocols and especially interfaces between components /
systems from a different perspective. For years, interfaces, especially
their dynamic behavior, between complex software driven systems were a
worry. ... Since 2007 or so, Philips Healthcare cooperates with
[start-up] Verum and uses their [CSP] techniques especially for
formalizing interfaces and automatically testing them against formal
specification, but also for software development of control software.
Philips Healthcare, I believe, was the first 'big' contract for Verum,
allowing them to find investors and really kick-off. So, yes, I do
believe that the work of your University has paid off via its ideas,
also for Philips Healthcare — as described in the history above."
Competitive Advantage in the Space Industry: Dr. Barry Cook (CTO,
4Links Ltd) [S5]
writes: "4Links Limited has used the CSP/occam model as the basis for
its design of a very successful range of test equipment for the Space
industry. We are seen as a world leader in this field and export ... our
products ... to more than twenty countries. We gain significant
competitive advantage in our complex, high performance, mixed
hardware/software designs from use of the CSP/occam model. The
University of Kent has provided a focus in exploring ideas that guide
us, validated by their producing proven implementations in KRoC, JCSP
etc. as well as numerous examples."
Sir Charles Antony Richard Hoare (FRS, Microsoft Research) [S1]
writes generally of the work: "The achievements of the Kent research
group in Communicating Process Architectures is unique in its class. The
team has combined two successful theories of concurrency, CSP and the
π-calculus, into a single language. It has implemented the
combination with worldbeating efficiency. And it continues to serve a
group of appreciative industrial users in UK and Europe."
Separate from these testimonials, evidence for the impact of our work is
recorded in the published research and activities promoted by others on
the web. One of the most active communities focuses on concurrency
education via process-oriented design (and occam-pi), using robotics and
other applications running on small low-memory low-powered devices (such
as the Arduino and Raspberry Pi) for hands-on practice. This was started
by six PhD students at Kent, four of whom have graduated and left for
employment (USA, Denmark and UK), and who manage the supporting website [U3], mailing list and develop the
technology. This technology is based around the Transterpreter [U4, U5],
a virtual machine for occam-pi byte code, that originated at Kent and
shares the compiler and application libraries from our occam-pi tool-set
(KRoC). The websites contain a wealth of information for new users,
especially for students and ultimately schoolchildren, including an online
book ("Plumbing for the Arduino", 93 pp, [U6])
and LGPL-licensed software.
As evidence of the sustainability of JCSP, there have been important
third party contributions to the JCSP library from the University of
Aberdeen (Alastair Allen, Bernhard Sputh) and Napier University (Prof. Jon
Kerridge, Kevin Chalmers) supporting the safe termination of networks [U7] and a
significant revision and upgrade to the distributed and mobile
channel/process package [U8].
The ideas and mechanisms within JCSP have inspired and challenged similar
developments for other programming languages, including the CSP library
for Scala (Communicating Scala Objects by Bernard Suffrin,
Worcester College, Oxford [U9]),
three CSP libraries for Python (PyCSP by Rune Friborg at al, Univ.
of Twente, the Netherlands; python-csp by Sarah Mount et al.,
Univ. of Wolverhampton; Hydra by Waide Tristram et al, Rhodes
University, SA - papers downloadable from CPA 2009 [U10])
and the Groovy version of JCSP [U11]
(by Jon Kerridge, Napier Univ.).
Independently written tutorials on JCSP have been written for the IBM
DeveloperWorks Technical Library [U12,
U13,
U14].
These were authored by Abhijit Belapurkar, a senior technical architect at
Infosys Technologies Limited, Bangalore. The main tutorial [U13]
has had 12,092 views to date, and the main tutorial in the Japanese
version [U15]
had 2,503 views.
Evidence of the use of two of the main products of our research (the KRoC
occam-pi toolset and the JCSP library and documentation) lies in
download/update counts and citations. Both products are made available
under the GPL and, where possible, L-GPL open source licenses. Both are
obtainable from more than one place and in more than one form (raw
download or SVN updates).
From the original KRoC website [U16]
and in the period from January 2008 through July 2013, there were
approximately 6,500 raw downloads of KRoC. Over the same period, there
were over 325,000 visits to the site from over 27,000 unique IP addresses.
However, access through Kent CSProjects (U17)
was established in October 2007 and this has since become the main source:
from January 2008 through July 2013, over 12.5 million visits (48,598
unique IPs) were made and 118,974 SVN updates recorded (either new
user downloads or existing user updates to get latest versions). In April
2013, KRoC sources moved to Git [U18]
and we have no figures for downloads or updates from there. Since June
2009, another website [U19] was set up
by Dr. Adam Sampson (an ex-Kent PhD and research associate, now a lecturer
at the University of Abertay, Dundee), with collected links to KRoC
occam-pi, JCSP and all the CSP libraries for other languages (C, C++,
Scala, Python), and XC (the XMOS CSP extension to C). In the years 2010,
2011 and 2012, this site attracted 7,763, 6,619 and 26,280 unique IP
address visitors respectively. For 2013 to the end of July, there have
been 22,409 different visitors. This shows continuing healthy growth.
JCSP version 1.1 (a major revision) was released in October 2007. In the
period from January 2008 through July 2012, there were over 15,300
downloads of JCSP from the main JCSP website [U20].
Over the same period, there were almost over 2.4 million visits to the
site from over 60,000 unique IP addresses. The JCSP packages and
documentation are also mirrored at a Codehaus git repository [U21]),
for which it has been impossible to obtain any statistics.
In summary, JCSP and KRoC occam-pi have proven impact in the software
development industry across a variety of sectors (semiconductor, testing,
space, real-time), as well as broad take up through open source
distribution. Both technologies have attracted third-party contributions
of code and documentation, as well as triggering similar developments for
other programming languages.
Sources to corroborate the impact
Corroborating statements provided by
[S1] http://www.cs.kent.ac.uk/research/REF2014/Hoare.txt
[S2] http://www.cs.kent.ac.uk/research/REF2014/Syed.txt
[S3] http://www.cs.kent.ac.uk/research/REF2014/Beton.txt
[S4] http://www.cs.kent.ac.uk/research/REF2014/Boosten.txt
[S5] http://www.cs.kent.ac.uk/research/REF2014/Cook.txt
References from sections 2 and 4
[U1] https://www.cs.kent.ac.uk/research/groups/plas/wiki/IFIP_WG24
[U2] http://www.cs.kent.ac.uk/projects/ofa/sei-cmu/
[U3] http://concurrency.cc/
[U4] http://www.transterpreter.org/
[U5] http://www.wotug.org/paperdb/send_file.php?num=126
[U6] http://concurrency.cc/pdf/plumbing-for-the-arduino.pdf
[U7] http://www.wotug.org/paperdb/send_file.php?num=214
[U8] http://www.wotug.org/papers/CPA-2009/ChalmersKerridge09/ChalmersKerridge09.pdf
[U9] http://www.cs.ox.ac.uk/people/bernard.sufrin/CSO/cpa2008-cso.pdf
[U10] http://www.wotug.org/paperdb/show_proc.php?f=4&num=27
[U11] http://www.soc.napier.ac.uk/~cs10/#_Toc314839707
[U12] http://www.ibm.com/developerworks/java/library/j-csp1/
(Java thread problems)
[U13] http://www.ibm.com/developerworks/java/library/j-csp2/
(Main JCSP tutorial)
[U14] http://www.ibm.com/developerworks/java/library/j-csp3/
(Advanced JCSP tutorial)
[U15] http://www.ibm.com/developerworks/jp/java/library/j-csp2/
(also j-csp1 and j-csp3)
[U16] http://www.cs.kent.ac.uk/projects/ofa/kroc/
[U17] http://projects.cs.kent.ac.uk/projects/kroc/
[U18] https://github.com/concurrency/kroc
[U19] http://pop-users.org/
[U20] http://www.cs.kent.ac.uk/projects/ofa/jcsp/
[U21] http://xircles.codehaus.org/projects/jcsp