On 10/12/06, Hugh Sasse <hgs / dmu.ac.uk> wrote: > So, my question is this: Given that since I started working in > computing there have been major strides in software development, > such as Object Oriented programming becoming mainstream, development > of concepts like refactoring, development of practices such as the > Agile methodologies, not to mention developments in networking and > databases, what are the parallel developments in debugging large > systems? Invariant checks ("Design by Contract"), mostly. Adding invariant checks to your system will often unearth weird cases - making them easily reproducable and making them fail early. Testing (which has already been mentioned) can handle some of the same niche, by removing coupling and allowing you to externally check for invariants being kept. However, it is usually much easier to add invariant checks to a system than to add tests. Eivind.