Page 88 -
P. 88
84 P.-O. Siebers and F. Klügl
overall development process in a structured and aware way, from formulating the
objective behind the ABSS study to validating and deploying the simulation results.
We hereby concentrate more on the elements of the overall process that relate to
the phases from model conceptualisation to software development as we think of
software engineering tools most relevant for those. The second pillar are structured
and formal languages for expressing the concepts that are seen as relevant in the
system under consideration. These languages can be used in the different steps
for describing different views or elements of the model in an as unambiguous
as possible way. In phases towards implementation of the model, pillars 3 and 4
become essential. Architectures and pattern form a way to capture best practices in
model design and implementation, while tools support the implementation process
directly.
First Pillar: Development Processes and Software Engineering
Methodologies
Social scientists seem to associate software engineering-based approaches with
“formal systems” that enforce to apply a prescribed sequence of steps using formal
languages far too rigorous to be appropriate for the mostly exploratory nature
of simulation model building. Software engineering is an engineering discipline
1
that is concerned with all aspects of software production. In general, it defines a
systematic process with steps that guide the developer from requirement elicitation
to implementation, validation and sometimes even maintenance of the software.
Nowadays there are a variety of more or less formal approaches in software
engineering together with some understanding which of the methods is suitable
for which kind of problem. As coined in Sommerville (2016), for example,
games are usually developed by producing a sequence of prototypes while safety-
critical software development appears to be highly formal with elaborated and
analysed specifications. In the same way as there are very different applications
of agent-based simulation, one may expect also very different ways of building
agent-based simulation software. A formal process here shall ensure that the
results possess particular qualities: The resulting software shall be reliable and
trustworthy, produced in an economic way. While the latter may mean that the
software is based on reusable components in a well-structured way, the former
qualities for simulation software refer to reproducibility of results and validity of
the implemented simulation model.
1
Sommerville (2016) relates software engineering also to computer science. The latter is focusing
more on theory and fundamentals, while software engineering is more practically oriented towards
developing and delivering useful software. He also sees software engineering as a part of systems
engineering which aims at systems integrating hardware, software and process engineering.