Software engineering considerations for individual-based models

Glen E. Ropella, Steven F. Railsback, Stephen K. Jackson
2002 Natural Resources Modeling  
Software design is much more important for individual-based models (IBMs) than it is for conventional models, for three reasons. First, the results of an IBM are the emergent properties of a system of interacting agents that exist only in the software; unlike analytical model results, an IBMs outcomes can be reproduced only by exactly reproducing its software implementation. Second, outcomes of an IBM are expected to be complex and novel, making software errors difficult to identify. Third, an
more » ... BM needs 'systems software' that manages populations of multiple kinds of agents, often has nonlinear and multi-threaded process control and simulates a wide range of physical and biological processes. General software guidelines for complex models are especially important for IBMs. (1) Have code critically reviewed by several people. (2) Follow prudent release management practices, keeping careful control over the software as changes are implemented. (3) Develop multiple representations of the model and its software; diagrams and written descriptions of code aid design and understanding. (4) Use appropriate and widespread software tools which provide numerous major benefits; coding 'from scratch' is rarely appropriate. (5) Test the software continually, following a planned, multi-level, experimental strategy. (6) Provide tools for thorough, pervasive validation and verification. (7) Pay attention to how pseudorandom numbers are generated and used. Additional guidelines for IBMs include: (a) design the model's organization before starting to write code, (b) provide the ability to observe all parts of the model from the beginning, (c) make an extensive effort to understand how the model executes how
doi:10.1216/nrm/1030539094 fatcat:ztwoty5j7va7deyj5nvo3rzy5y