Reviewed by
Bruce Edmonds
Manchester Metropolitan University
Although written as a general guide to developing simulations, this book has the style and goals of a software engineer. It thus aims for the greatest possible generality (being applicable to a wide range of simulation contexts) but also for formality (being as unambiguously specific about the concepts and processes involved). Generality and formality are difficult to achieve together, so there is inevitably some compromise involved. Here the authors have decided to utilise Design Patterns to describe their approach (Alexander 1977; Gamma & al. 1995). These are concise, semi-formalised descriptions that adhere to the same structure, but which are ultimately described in terms of other patterns and natural language. The book starts with a very high-level pattern: a “CoSMoS Simulation Project”, which is then defined in terms of four stages described in other patterns. These stages are then described in terms of other patterns etc. so that one gradually gets to increasingly specific patterns. Thus patterns are rather like procedures in simulation code, and this gives a computer-sciency style to the book, which, to those used to a more social-science, discursive, style can feel a bit alien. Like all code this is not easy to read (unless you have been involved in its development) and will take some effort to get into – it is probably best to try and work through these during the development of a simulation, so that all the detail makes more sense as you get to it. On the plus side, if you did follow this it would help you avoid many potential simulation traps and would result in a more reliable and better documented simulation.
These prescriptions do not result from mere “armchair” theorising but from extensive experience with designing, developing and checking simulations for such scientific purposes. Whilst it is true that these were in the robot engineering and biological domains, this book has the “ring of truth” about it – reflecting much that I have experienced as a simulation modeller of social phenomena. Thus, even though not specifically designed to guide social simulation, this book has much that we can usefully learn from. In particular, I would like to highlight some of the important distinctions that they make, which are important in terms of improving our simulation methodology.
The “Anti Patterns” are short descriptions of some of the things that often go wrong in simulation work, and are fun to read. I think I can say with certainty that I have been guilty of most of them at some stage or other. Thus, for a good laugh skip to pages 114, 137, 169 and 182. I will not spoil this by describing them all here, but merely mention a few. Analysis Paralysis is when one is spending too much time analysing and modelling the Domain trying to get everything perfect and never getting to the implementation[2]. A Bespoke Too Far, when one invents a new modelling approach for each simulation. One Size Fits All, is where a particular approach is used regardless of research questions, scientific context or resource limitations. I also liked the use of the text “!! Future” to indicate intentions and characteristics that have not been done yet, but are left to future work – in some social simulation work I suspect many authors are not so clear about the difference between what they hope to be and what has presently been achieved (e.g. thinking of their simulation as predictive when this is far from being established).
The book does not merely present its approach in its raw, complete detail but gives a good overview of the main ideas, as well as giving a simple example to help explain it, and a very detailed example where the approach is applied. The core of this book – the full specification of the approach – is not meant to be read cover-to-cover as a narrative, but rather as a reference source to be consulted when appropriate.
To sum up, this book contains many good suggestions for tightening up our approach to simulation, distinguishing many things that are often conflated or confused, and is flexible in its approach (it does not suggest you have to do all of this, but should select what is appropriate in a reasoned manner). It has been developed with very different domains to that of social science in mind – in particular, in domains where most of the micro-details about the phenomena of interest are well understood, and the general level of domain-level uncertainty much lower. Thus, in parts it does assume one is working upwards from the micro-level towards emergent macro-level properties and has fewer prescriptions for some of the particular difficulties of modelling social phenomena. However, with a only a little adaption, this is highly relevant to social simulation and I heartily recommend taking to heart its key distinctions and approach.
1. See http://cosmos-research.org.
2. Not one of my failings ;-) but this has been true of some of my PhD students.