2.3  Producing robust programs