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.