Simple software processes and tests improve the reliability and usefulness of a model

  • Authors:
  • Dean P. Holzworth;Neil I. Huth;Peter G. deVoil

  • Affiliations:
  • CSIRO Ecosystem Sciences, P.O. Box 102 Toowoomba 4350, Queensland, Australia;CSIRO Ecosystem Sciences, P.O. Box 102 Toowoomba 4350, Queensland, Australia;Department of Primary Industries and Fisheries, P.O. Box 102 Toowoomba 4350, Queensland, Australia

  • Venue:
  • Environmental Modelling & Software
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Models are abstractions of reality that have predetermined limits (often not consciously thought through) on what problem domains the models can be used to explore. These limits are determined by the range of observed data used to construct and validate the model. However, it is important to remember that operating the model beyond these limits, one of the reasons for building the model in the first place, potentially brings unwanted behaviour and thus reduces the usefulness of the model. Our experience with the Agricultural Production Systems Simulator (APSIM), a farming systems model, has led us to adapt techniques from the disciplines of modelling and software development to create a model development process. This process is simple, easy to follow, and brings a much higher level of stability to the development effort, which then delivers a much more useful model. A major part of the process relies on having a range of detailed model tests (unit, simulation, sensibility, validation) that exercise a model at various levels (sub-model, model and simulation). To underline the usefulness of testing, we examine several case studies where simulated output can be compared with simple relationships. For example, output is compared with crop water use efficiency relationships gleaned from the literature to check that the model reproduces the expected function. Similarly, another case study attempts to reproduce generalised hydrological relationships found in the literature. This paper then describes a simple model development process (using version control, automated testing and differencing tools), that will enhance the reliability and usefulness of a model.