software reliability/robustness




buffers for arrays etc. should be allocated as approximately 20% more space (number of elements) than is

	expected, dynamic memory allocations are generally for the exact size



a 'test transaction' is a transaction with a small value to see if the effect increases the total value or

	decreases it, this is the easiest way to get signs correct for increase/decrease effects


test each individual function as it's developed, e.g. formating values



put in traps for testing when developing, e.g. check that the output of a sort routine is actually sorted,

	that a routine calculated the correct value (using a simpler method)

