Organising Computation through Dynamic Grouping

There are a range of abstractions used for both modelling and pro- gramming of modern computational systems. While these abstractions may have been devised for specific purposes, the variety of options is often confusing, with development and programming techniques often being distinct. The aim of this chapter is two-fold. First, we bring together a number of these abstractions into one, general, view. Second, we show how, by grouping computational elements, this general view can capture a range of behaviours in areas such as multi-agent systems, web services, and object-oriented systems. This framework then pro- vides a basis for design and implementation techniques for a wide variety of modern computational systems, in particular providing the basis of a general pro- gramming language for dynamic, distributed computation.