In this thesis, the theory and practice of an innovative coding error isolation method is enhanced and extended. Methods and tools that have been developed to address the limitations of the original approach and to extend its applicability are presented.
For dynamic simulations to be credible, verification of the computer code must be an integral part of the modelling process. Simulation verification is a process that ensures simulation code (computerized model) adequately describes the conceptual (e.g. mathematical) model. It should not be confused with simulation validation, which is a process that ensures the computerized model adequately describes reality. Verification of simulation models is an important step in the model development process, but until now it has been a tedious and time-consuming, or even often overlooked, activity.
Simulation coding error isolation is a very specific type of software verification. Previous research has shown that it is possible to use the mathematical properties of a model to link the erroneous behaviour of a computerized model to the coding errors involved in the implementation. A novel method developed recently, based on the concept of hack-to-hack testing, has been demonstrated to be capable of isolating coding errors in simulation models. This so-called FEAMAD (FEAture MAtrix based Debugging) method, had a number of limitations. In particular, the feature matrices, which characterise each class of error in the code, were manually generated, which is inefficient and error-prone; the time required to isolate errors increased combinatorially with the size and complexity of the model severely limiting its applicability to complex models. Furthermore, the method was subjected to limited testing in real-world applications. The research for this thesis has been undertaken to address these limitations.
Feature matrices are arguably the most important element of the FEAMAD method. Feature matrices are vectors/matrices that characterise the geometric properties of coding errors. They are generated by analysing the model implementation, which determines the effect of coding errors on the model output. Previously these feature matrices were generated by visually inspecting the model implementation and manually creating the matrices. Methods to automatically generate and verify the feature matrices have been developed in this work. The methods utilize code parsing and mutation analysis tools. A prototype of the Automatic Feature MAtrix Generation (AFMAG) method has also successfully been implemented and demonstrated with wastewater treatment models.
Maximising the efficiency and effectiveness of the FEAMAD method is important to enable isolation of errors in large, complex models. It has been discovered that the model equations themselves could be 'designed' to ensure that coding errors manifest themselves in a model output in such a way that isolation efficiency and effectiveness is maximised. A method has been developed that employs this idea of model 'design' to maximise isolation efficiency and effectiveness. This method significantly reduces the times required for isolating errors.
The FEAMAD method was previously demonstrated with models implemented on a single platform. Replicating the demonstrated effectiveness in cross-platform situations has proven to be much more complicated. The cross-platform data transfer results in significant numerical errors, so much so that the effect of some errors may be masked. A novel solution to the problem, a double state-variable injection method, has been developed and demonstrated to be highly effective. Consequently, the FEAMAD method has been enhanced to debug models implemented in different simulation platforms. Coding error isolation, through comparing model implementations on multiple platforms, represents a major application area of the FEAMAD method.
Code parsing and mutation analysis tools have also been used to support a method developed for error threshold optimisation. This method allows error threshold selection to be optimised for particular model implementations.
As a whole, this research, and indeed the individual methods that have been developed, provide valuable, practical tools for those working in the modelling and simulation field.