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.
   83   84   85   86   87   88   89   90   91   92   93