Page 97 -
P. 97
6 What Software Engineering Has to Offer to Agent-Based Social Simulation 93
of others or how classes are otherwise linked to each other. This type of diagram
is not just suitable for depicting an agent’s internal setup but also its embedding
into an organisation structure.
• State and activity diagrams can be used to capture dynamics. They show the
states that an (typical) entity can be in, as well as the transitions between them.
Activity diagrams focus on behaviour as a flow of activities also in relation to
other agents’ activities.
• Sequence diagrams show how entities interact as a sequence of messages that
they exchange.
In addition, other diagram types are proposed to capture details of the package
structure, deployment, etc. In the second part of this chapter, we give more details
on how to use UML diagrams for model development and embed their use into some
form of best-practice process guiding the development of a conceptual model.
Third Pillar: Architectures and Patterns
Methodologies and the use of a formal and precise language to describe different
aspects of the conceptual model as well as to capture model specification, etc.
are particularly important for people just starting with modelling and simulation
as they provide guidelines for managing the development process and support for
conceiving a model. A third pillar of software engineering for ABSS is related
to best practices in designing models that means they provide advice on how to
structure and build the actual software.
In the seminal book on software patterns (Gamma et al. 1994), best practices
in (object-oriented) software design have been formalised and captured in such a
way that they can easily be communicated and even taught. Over the years software
design pattern has been suggested for many problem types, each of them giving
a particular abstract “good” solution. Patterns have been also suggested in AOSE
(see Juziuk et al. 2014 for a general survey). As North and Macal (2011) state,
the standard software patterns are only of limited use for ABSS as the problems
addressed by them are of a completely different nature to the ones needing to
be solved when developing simulations. For simulation, one may distinguish two
different views on design pattern: (1) design pattern that directly relates to particular
phenomena to be modelled or (2) design pattern that solves problems on a more
technical level. Klügl and Karlsson (2009) give two examples for the first type
of pattern, e.g. they describe what agent behaviour can produce exponential agent
number growth. North and Macal (2011) give a list of pattern for the second case,
e.g. pattern for agent scheduling, how to design spatial environments in an efficient
way or the model-view-controller pattern, which is also the most well-known pattern
in software engineering, describing how to separate visualisation from application-
specific logic.