Page 93 -
P. 93
6 What Software Engineering Has to Offer to Agent-Based Social Simulation 89
stakeholders to avoid the system developing into something which is actually not
intended. Another principle is “simple design”; that means producing software that
solves the particular problem and nothing else. With “refactoring”, it is ensured that
the quality of software design is improved after each iteration in the development
cycle. “Short releases” as a principle mean many executable prototypes and software
testing is in the centre of the methodology. These principles are as important as
the rather more prominent “pair programming” way of implementation, in which
two software developers sit in front of the monitor programming together —
one coding, the other supporting. Extreme programming as overall approach may
fit also to developing model specifications and simulation system formalisations
using structured methodologies mentioned above. Short releases and testing would
then correspond to running and analysing prototypic simulation runs in an overall
iterative approach.
Moyo et al. (2015) organise the development of an agent-based simulation
study using SCRUM, an agile approach to manage software development. This
article forms a good introduction to agile software development methodologies
for simulation in general and gives a case study modelling alcohol consumption
dynamics.
Formal Methodologies Versus Modelling Principles
None of these more formal methodologies for developing agent-based simulations
actually contradicts the principles or informal strategies that are proposed in
the social simulation community for model development. Examples for those
principles are the KISS principle stating that a model should be as simple as
possible. A contrasting principle is the KIDS strategy (Edmonds and Moss 2004)
arguing that a model should be preferred that is understandable and descriptive.
Simplification should not be exaggerated, especially before fully understanding the
system to be modelled. Another strategy is the so-called pattern-oriented modelling
(Grimm et al. 2005) that focuses on reproducing all pattern or stylised facts
observable in the underlying data. General guidelines from a simulation engineering
point of view can be found in Kasaie and Kelton (2015) but also in Richiardi et
al. (2006). All these informal strategies can be combined with the more formal
methodologies mentioned here. Underlying metamodels are usually very generic
and can be used to capture many different societies, agents, etc.
Second Pillar: Structured and Formal Languages
In contrast to natural language, structured and formal languages offer a mean
to clearly describe a system. Formal languages form important elements of the
methodologies discussed in the last section but have also a value on their own.
Syntax and semantics of language elements and their relations are precisely given.