Last updated on 16th July 2024
Iterative and incremental development practices are key to Agile software development. The goal is to break down the development of a large application into smaller chunks. Code is designed, developed and tested in cycles. Each iteration sees the addition of new features to enhance the overall functionality of the application. At each stage of development, the user should have a functional application.
Building agent-based models has a number of parallels to developing software. Building these types of models calls for the adoption of a software developer's mindset.
Rather than trying to build a large and complex model in one attempt, modellers should ensure that sensible model output can be obtained at all stages of model development. Doing so requires the modeller to start by implementing a stripped down version of the desired model. Model complexity is layered on incrementally, ensuring that each iteration of the model produces sensible output.
This type of workflow is supported by Git version control. Each incremental increase in model complexity, such as the introduction of a new agent type or the addition of a new method to an agent's behaviour, should be tested thoroughly. Once the modeller is satisfied, the new version of the model can be committed to version history. Changes which break the model's functionality can simply be rolled-back.
Branches support experimental model development. Modellers can create multiple branches from a model's master branch, testing new concepts and functionalities in each one. When a modeller is satisfied with functionality in a branch, they can merge that branch with the model's master branch.