Page 87 -
P. 87
6 What Software Engineering Has to Offer to Agent-Based Social Simulation 83
Review of Formal Approaches to Model Development
Already in 2006, Richardini et al. identified a number of methodological problems
supposed to hinder the wider adoption of agent-based modelling and simulation in
the social sciences. In contrast to alternative forms of modelling and simulation,
ABSS is assumed not to be suitable to follow shared, standardised conventions
of how to proceed, how to describe or how to analyse a simulation model due to
its exploratory, bottom-up nature aiming at reproducing emergent processes, etc.
Building software in general had similar problems for a long time as the early (and
ongoing) discussions on the nature of software development (art, engineering or
craftsmanship) show (see, e.g. Pyritz (2003)).
There are no underlying principles of physics or other established basic knowl-
edge that could be used for building software in the same way as, for example,
rules of statics for building bridges. Nevertheless, there was the need to systematise
software development by developing guidelines, conventions and best practices
that make the development process more engineering-like, producing software with
intended quality in a predictable way. A number of process models have been
invented with the waterfall model as the most well-known traditional approach or
extreme programming as a more modern, flexible compilation of best practices.
Characteristics of the former are a number of steps that express more and more
detailed views onto the resulting software product while moving from a clarification
of what needs to be eventually implemented, tested and maintained. In modern
forms of software development approaches, fast prototyping and frequent testing
are in the centre. Iterative development with code refactoring that improves software
design replaces clearly structured, systematic larger process steps by more or less
organised smaller advance.
Although ABSS has particularities that preclude to take simulation models
as just another kind of software, software engineering offers a large repertoire
of languages and tools to support systematic and structured system analysis and
development: formal and structured text-based and diagram-based languages allow
more precise formulations of model elements than natural language would do. By
clarifying what needs to be formulated, those languages guide not only model
specification and documentation but all phases in the development. Specific process
suggestions organise different views and model description elements into a sequence
of steps that correspond to some best practice of how to proceed when designing,
implementing and working with a simulation model. Those methodologies exist
not only for simulation models in general but also for agent-based simulations in
particular. At some stage in those processes, best practices on a more technical level
support the translation of concepts into program code — such support is given by
(software) pattern formalising good solution to recurring problems.
In this section, we will present different contributions of software engineering
to support the development of ABSS models. We identified four areas of such
formal instruments in the widest sense and organised the section according to
these four elements: Methodologies as the first pillar suggest how to manage the