Page 67 -
P. 67

62                                                     E. Norling et al.

            5.1 Introduction: Exploration and Consolidation Modelling
                 Phases

            Formal approaches to the development of computer programs have emerged through
            the collective experience of computer scientists (and other programmers) over the
            past half-century. The experience has shown that complex computer programs
            are very difficult to understand: once past a certain point, unless they are very
            careful, programmers lose control over the programs they build. Beyond a certain
            stage of development, although we may understand each part—each micro-step—
            completely, we can lose our understanding of the program as a whole; the effects of
            the interactions between the parts of a program are unpredictable; they are emergent.
            Thus, computer science puts a big emphasis on techniques that aim to ensure that
            the program does what it is intended to do as far as possible. However, even with
            the most careful methodology, it is recognised that a large chunk of time will have
            to be spent debugging the program—we all know that a program cannot be relied on
            until it has been tested and fixed repeatedly.
              However, it is fair to say that most computational modellers do not follow such
            procedures and methodologies all the time (although since people don’t readily
            admit to how messy their implementation process actually is, we cannot know
            this, just as one does not know how messy people’s homes are when there are no
            visitors). There are many reasons for this. Obviously, those who are not computer
            scientists may simply not know these techniques (in which case they should at least
            read Chap. 6 in this volume). Then there are a large number of modellers who
            know of these techniques (to some degree) but judge that they are not necessary
            or not worth the effort. Such a judgement may or may not be correct. Certainly it
            is the case that people tend to underestimate the complexity of programming and
            so think they can get away with not bothering with a more careful specification
            and analysis stage. In some of these cases, the modeller may regret not engaging in
            more planning, but there may also be other times when there are good reasons not to
            follow such techniques. Thirdly, a specification and design approach is simply not
            possible if you don’t have a clear idea of your goal. Often, when modelling some
            complex phenomena (and especially social phenomena), one simply does not know
            beforehand which parts of the system will turn out to be important to the outcomes
            and which can be safely omitted. Further, one may not even know what will be
            possible to model computationally.
              One of the big benefits of modelling phenomena computationally is that one
            learns a lot about what is crucial and possible in the process of building a simulation
            model. This is very unlike the case where one has a functional goal or specification
            for a program that can be analysed into sub-goals and processes, etc. In (social)
            simulation, the degree to which formal approaches are useful depends somewhat on
            the goal of modelling. If the goal is very specific, for example, understanding the
            effect of the recovery rate on the change in the number of infections in an epidemic,
            and the basic model structure is known, then what is left is largely an engineering
            challenge. However, if the goal is general understanding of a particular process,
            then there is no possible way of systematically determining what the model should
   62   63   64   65   66   67   68   69   70   71   72